編輯:關於Android編程
<喎?/kf/ware/vc/" target="_blank" class="keylink">vcD4KPHByZSBjbGFzcz0="brush:java;">項目包 src --java源代碼 gen文件夾 -- 資源文件,修改後自動生成 ---R.java 中的drawable類對應目錄裡的drawable目錄, layout對應 目錄中的layout目錄,String對應String目錄 assets文件夾 存放較大的文件:如視頻,音頻,字體等 (1G 不會被編譯) res文件夾 ---drawable 圖片 Res存放資源文件 ---layout main.Xm 界面的布局textView顯示內容不能修改 ---values String.Xml 存放字符串便於國際化 AndroidManifest.xml
2.工程結構解析 src:java的源代碼目錄(只允許有一個包) AndroidMainfest.Xml(清單文件, 描述應用程序的構成,組件,權限等信息) gen/R.java 資源文件,修改後自動生成 android:庫 assets:靜態資源文件 drawable 程序圖標 layOut布局文件夾 values:應用程序的String顏色 (String.XML) classes.dex編譯的java二進制碼Android平台上的可執行文件 2. Android 的包裝功能 android .app 提供高層程序的模型,提供基本的運行環緝 android .content 對設備上的數據進行訪問和發布的類 android .database 通過內容提供浏覽和發布 android .graphics 底層的圖形庫 android .location 定位和相關的服務 android .media 管理多哦中音頻,視頻的媒體和接口 android .net 提供幫助網絡訪問的類 android .os 提供了系統服務,消息的傳輸 , IPC機制 android .opengl 提供OPENGL的工具 android .provider:提供訪問android的內容 android .telephony 提供與撥打電話相關的APL交互 android .view 提供基礎的用戶界面接口框架 android .util 涉及工具性的方法 android .webkit默認浏覽器接口 android .widget包含各種UI元素在應用程序的頻幕中使用 3. android 程序的核心組件 view 界面視圖,組件 UI控制 Intent 意圖,支持組件間的通信 Activity:處理界面 IntentReceiver接收信息及事件處理 Service 後台服務 Notification :消息與通知 4.Activity的聲明周期 void onCreate(Bundle saveInstancestate ) void onStart () void onRestart() void onResume() void onPause() void onStop() void onDestroy() Myandroid1/res/layout/activity_main.xml/Myandroid1/res/values/strings.xml Myandroid1 Settings Jia You Wangqi! 【Activity】 一個Activity是一個應用程序組件,提供一個屏幕,用戶可以用來交互為了完成某項任務,例如撥號、拍照、發送email、看地圖。每一個activity被給予一個窗口,在上面可以繪制用戶接口。窗口通常充滿屏幕,但也可以小於屏幕而浮於其它窗口之上。 一個應用程序通常由多個activities組成,他們通常是松耦合關系。通常,一個應用程序中的activity被指定為"main"activity,當第一次啟動應用程序的時候呈現給用戶的那個activity。每一個activity然後可以啟動另一個activity為了完成不同的動作。每一次一個activity啟動,前一個activity就停止了,但是系統保留activity在一個棧上(“back stack”)。當一個新activity啟動,它被推送到棧頂,取得用戶焦點。Back Stack符合簡單“後進先出”原則,所以,當用戶完成當前activity然後點擊back按鈕,它被彈出棧(並且被摧毀),然後之前的activity恢復。 當一個activity因新的activity啟動而停止,它被通知這種狀態轉變通過activity的生命周期回調函數。有許多回調函數一個activity可能會收到,源於它自己的狀態變化-無論系統創建它、停止它、恢復它、摧毀它-並且每個回調提供你完成適合這個狀態的指定工作的機會。例如,當停止的時候,你的activity應該釋放任何大的對象,例如網絡數據庫連接。當activity恢復,你可以重新獲得必要的資源和恢復被中斷的動作。這些狀態轉換都是activity的生命周期的部分。 【Creating an Activity】 創建一個activity,你必須創建一個Activity的子類(或者一個Activity的子類的子類)。在你的子類中,你需要實現系統回調的回調方法,當activity在它的生命周期的多種狀態中轉換的時候,例如當activity被創建、停止、恢復或摧毀。兩個最重要的回調方法是: onCreate() 你必須實現這個方法。系統調用它當創建你的activity的時候。在你的實現中,你應該初始化你的activity的基本的組件。更重要的是,這裡就是你必須調用setContentView()來定義activity用戶接口而已的地方。 onPause() 系統調用這個方法當用戶離開你的activity(雖然不總是意味著activity被摧毀)。這通常是你應該提交任何變化,那此將會超越user session而存在的(因為用戶可能不再回來)。 有若干其它生命周期回調函數你應該使用為了提供一個流暢的用戶體驗,並表操作異常中斷會引起你的activity被中斷甚至被摧毀。 1、Implementing a user interface 一個activity的用戶接口被一個層次化的視圖提供--繼承於View類的對象。每個View控制activity窗口中的一個特定矩形區域並且能響應用戶交互。例如,一個view可能是個button,初始化動作當用戶觸摸它的時候。 Android提供大量預定義的view,你可以使用來設計和組件你的布局。“Widgets”是一種給屏幕提供可視化(並且交互)元素的view,例如按鈕、文件域、復選框或者僅僅是圖像。“Layouts”是繼承於ViewGroup的View,提供特殊的布局模型為它的子view,例如線程布局、格子布局或相關性布局。你可以子類化View和ViewGroup類(或者存在的子類)來創建自己的widget和而已並且應用它們到你的activity布局中。 最普通的方法是定義一個布局使用view加上XML布局文件保存在你的程序資源裡。這樣,你可以單獨維護你的用戶接口設計,而與定義activity行為的代碼無關。你可以設置布局作為UI使用setContentView(),傳遞資源布局的資源ID。可是,你也可以創建新Views在你的activity代碼,並且創建一個view層次通過插入新Views到ViewGroup,然後使用那個布局通過傳遞到根ViewGroup給setContentView()。 bundle就是一個映射:一個從字符串值到不同封裝類型的映射。 為何是封裝類型,不是數值類型?在下面的put方法中可以看到, 它還可以操作bundle自身,bundle本身並不是基本的數值類型。是object 的子類. 在activity間數據傳遞擔負重要任務,實際傳遞的是bundle:
--------------------------------------------------------------------------------------------
在手機的界面上是否顯示圖標
3-javaAndroid 文件 @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); //設置文件的VIew對象 } 4-撥打電話
--重點提要--Android--R中的界面中關於添加控件的設計 android:id="@+id/button1"---在R文件中添加ID號 findViewById(R.id.editText1);---尋找ID對應的空間 --重點提要--Android--啟動控件中的界面中關於添加控件的設計 //意圖:想干一件事==windows start Intent intent = new Intent(); //判斷輸入的內容是否為空 if(TextUtils.isEmpty(nummberstr)){ } ---------------------------- android單擊事件的寫法 1.創建一個內部類實現OnClickListener接口 重寫onClick()方法 2.實例化接口 ,匿名內部類 bt_dail.setonClickListener( new OnClickListener(){ CallPhone(); }) 3.MainActivity實現接口 在類中重寫onClick()方法執行CallPhone() public void onClick(View v){ switch( v.getId ){ case R.id.bt_cail: ....;break; default : .....break; } } 4.內部通過反射機制執行程序 android:onClick = "dailButtonClicked" 在MainActivity主程序中加入方法 執行程序 ----源代碼---- 1.layOut層
2-Strings3-MainActivity package com.example.myfriend; import android.net.Uri; import android.os.Bundle; import android.app.Activity; import android.content.Intent; import android.text.TextUtils; import android.view.Menu; import android.view.View; import android.view.View.OnClickListener; import android.widget.Button; import android.widget.EditText; import android.widget.Toast; public class MainActivity extends Activity implements OnClickListener { private String nummber =""; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); Button button1 = (Button)findViewById(R.id.Call_other); Button button2 = (Button)findViewById(R.id.Call_Chaibo); Button button3 = (Button)findViewById(R.id.Call_chenyi); Button button4 = (Button)findViewById(R.id.Call_JINRUIBIN); Button button5= (Button)findViewById(R.id.Call_lengzhenfu); Button button6 = (Button)findViewById(R.id.Call_linyawei); Button button7 = (Button)findViewById(R.id.Call_wangqi); Button button8 = (Button)findViewById(R.id.Call_xiangshuai); button1.setOnClickListener(MainActivity.this); button2.setOnClickListener(MainActivity.this); button3.setOnClickListener(MainActivity.this); button4.setOnClickListener(MainActivity.this); button5.setOnClickListener(MainActivity.this); button6.setOnClickListener(MainActivity.this); button7.setOnClickListener(MainActivity.this); button8.setOnClickListener(MainActivity.this); } @Override public boolean onCreateOptionsMenu(Menu menu) { // Inflate the menu; this adds items to the action bar if it is present. getMenuInflater().inflate(R.menu.main, menu); return true; } @Override public void onClick(View v) { // TODO Auto-generated method stub switch(v.getId()){ case R.id.Call_other: EditText text = (EditText)findViewById(R.id.Phone_call); this.nummber = text.getText().toString(); CallPhone(this.nummber); break; case R.id.Call_Chaibo: this.nummber ="656588"; Toast.makeText(MainActivity.this, "柴博"+this.nummber,0).show(); CallPhone(this.nummber); break; case R.id.Call_wangqi: this.nummber ="652008"; Toast.makeText(MainActivity.this, "王琪"+this.nummber,0).show(); CallPhone(this.nummber); break; case R.id.Call_JINRUIBIN: this.nummber ="652019"; Toast.makeText(MainActivity.this, "靳瑞斌"+this.nummber,0).show(); CallPhone(this.nummber); break; case R.id.Call_lengzhenfu: this.nummber ="656181"; Toast.makeText(MainActivity.this, "正甫"+this.nummber,0).show(); CallPhone(this.nummber); break; case R.id.Call_linyawei: this.nummber ="656587"; Toast.makeText(MainActivity.this, "亞偉"+this.nummber,0).show(); CallPhone(this.nummber); break; case R.id.Call_chenyi: Toast.makeText(MainActivity.this, "-->"+this.nummber,0).show(); this.nummber ="652652"; CallPhone(this.nummber); break; case R.id.Call_xiangshuai: Toast.makeText(MainActivity.this, "-->"+this.nummber,0).show(); this.nummber ="656202"; CallPhone(this.nummber); break; default: Toast.makeText(MainActivity.this, "ppp",0).show(); } } private boolean CallPhone(String number){ if(TextUtils.isEmpty(nummber)){ Toast.makeText(MainActivity.this, "電話號碼不能為空!", 0).show(); return false; } Intent intent = new Intent(); intent.setAction(Intent.ACTION_CALL); intent.setData(Uri.parse("tel:"+nummber)); startActivity(intent); return true; } } MyFriend Settings MyFriend! Call_me! Call_柴博! Call_王琪! Call_靳瑞斌! Call_廉亞偉! Call_冷正甫! Call_陳翼乾! Call_靳瑞斌 Call_柴博 Call_冷正甫 Call_廉亞偉 Call_唐濤 Call_王琪 \"Friend>. Call_相帥
本文我們將講解允許模擬位置在Android M下的坑。做地圖類應用的同學應該都知道為了避免軟件模擬位置影響正常流程的進行我們一般都會判斷用戶手機是否打開了模擬位置設置,若
通過Intent啟動Activity 為了動態關聯Activity界面,使用Intent啟動,可以靈活綁定。 在Intent靜態
OKHttp是一款高效的HTTP客戶端,支持連接同一地址的鏈接共享同一個socket,通過連接池來減小響應延遲,還有透明的GZIP壓縮,請求緩存等優勢。(GitHub頁:
一直使用Eclipse環境開發Android,也嘗鮮使用過Android Studio去開發,各種IDE配合Android SDK及SDK原生的Android Emula