Android-1-電話撥號器
項目包 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:
--------------------------------------------------------------------------------------------
在手機的介面上是否顯示表徵圖
<喎?http://www.bkjia.com/kf/ware/vc/" target="_blank" class="keylink">vcD4KPHByZSBjbGFzcz0="brush:java;">3-javaAndroid 檔案@Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); //設定檔案的VIew對象 }4-撥打到電話
--重點提要--Android--Layout中的介面中關於button的設計 file_parent match_parent 充滿表單-----觸到腳墊彈出軟鍵盤
--重點提要--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-Strings MyFriend Settings MyFriend! Call_me! Call_柴博! Call_王琪! Call_靳瑞斌! Call_廉亞偉! Call_冷正甫! Call_陳翼乾! Call_靳瑞斌 Call_柴博 Call_冷正甫 Call_廉亞偉 Call_唐濤 Call_王琪 \"Friend>. Call_相帥3-MainActivitypackage 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; }}
--重點提要--Android--Layout中的介面中關於button的設計 file_parent match_parent 充滿表單-----觸到腳墊彈出軟鍵盤