2010年10月7日 星期四

[Android SDK 入門] Android 常用控制項入門 : 按鈕控制項

前言 : 
這裡我們要介紹的控制項Button, 再複雜的人機介面程式都是包含 Button 的幾個控制項與邏輯堆疊而成. 從底下介紹你可以觀察 Android 應用程式的幾個組成份子, 包括配置主畫面的 xml 檔案 > 撰寫主程式 > 建立控制項的方法與程式碼 到最後為控制項加入處理的方法 (加入事件監聽)以實現預期邏輯與結果. 

範例說明 : 
主畫面配置幾個 android.widgetButton 控制項, 每個 Button 按下去後顯示另外的畫面來示範特殊控制項的操作. 

範例代碼 : 

- main.xml
  1. "1.0" encoding="utf-8"?>  
  2. "http://schemas.android.com/apk/res/android"  
  3.     android:orientation="vertical"  
  4.     android:layout_width="fill_parent"  
  5.     android:layout_height="fill_parent"  
  6.     >  
  7.     
  8.         android:id="@+id/btn_Button"  
  9.         android:layout_width="fill_parent"  
  10.         android:layout_height="wrap_content"  
  11.         android:text="按鈕控制項">      
  12.       
  13.   
  14.   

- ControlItemsDemo.java 代碼 : 主程式的 Activity
  1. package john.controlitems.demo;  
  2.   
  3. import android.app.Activity;  
  4. import android.content.Intent;  
  5. import android.os.Bundle;  
  6. import android.view.View;  
  7. import android.widget.Button;  
  8.   
  9. public class ControlItemsDemo extends Activity {  
  10.     private Button btn_Button;  
  11.       
  12.     /** Called when the activity is first created. */  
  13.     @Override  
  14.     public void onCreate(Bundle savedInstanceState) {  
  15.         super.onCreate(savedInstanceState);  
  16.         setContentView(R.layout.main);  
  17.         findViews();  
  18.         addListener();  
  19.     }  
  20.       
  21.     protected void findViews(){  
  22.         btn_Button = (Button)findViewById(R.id.btn_Button);       
  23.     }  
  24.     protected void addListener(){  
  25.         btn_Button.setOnClickListener(new Button.OnClickListener(){  
  26.             @Override  
  27.             public void onClick(View v) {  
  28.                 Intent intent_CheckBox = new Intent();  
  29.                 intent_CheckBox.setClass(ControlItemsDemo.this, SampleButton.class);  
  30.                 startActivity(intent_CheckBox);               
  31.             }  
  32.               
  33.         });  
  34.     }  
  35. }  

- SampleButton.java 代碼 : 顯示範例 Button 的 Activity
  1. package john.controlitems.demo;  
  2.   
  3. import android.app.Activity;  
  4. import android.os.Bundle;  
  5. import android.view.View;  
  6. import android.widget.Button;  
  7.   
  8. public class SampleButton extends Activity {  
  9.     private Button btn_Click;  
  10.       
  11.     @Override  
  12.     public void onCreate(Bundle savedInstanceState) {  
  13.         super.onCreate(savedInstanceState);  
  14.         setContentView(R.layout.sample_button);  
  15.         setTitle("This is demo for Button Activity");  
  16.         findViews();  
  17.         addListener();  
  18.     }  
  19.   
  20.     protected void findViews(){  
  21.         /*使用 findViewById() 傳入 Button 的 id 以取得畫面上Button 的實體 */  
  22.         btn_Click = (Button)findViewById(R.id.btn_Click);  
  23.     }  
  24.           
  25.     protected void addListener(){  
  26.         /** 
  27.          * 取的Button 實體後呼叫 setOnClickListener 來登記按鈕事件, 並傳入的參數為 
  28.          * 一個 in-line 的類別定義實體, 直接定義類別並實體化它. 因為這個類別並不會 
  29.          * 給其他類別使用, 所以並不需要指定變數名稱給他. 而該類別的定義中只有一個覆 
  30.          * 寫的方法就是 onClick. 其動作只是單存的改變目前Activity 的標題. 
  31.          */  
  32.         btn_Click.setOnClickListener(new Button.OnClickListener(){  
  33.             @Override  
  34.             public void onClick(View v) {  
  35.                 setTitle("Button being clicked!!!!");  
  36.             }  
  37.               
  38.         });  
  39.     }  
  40. }  

- sample_button.xml : 範例Button Activity 的 xml 描述檔
  1. "1.0" encoding="utf-8"?>  
  2. "http://schemas.android.com/apk/res/android"  
  3.     android:orientation="vertical"  
  4.     android:layout_width="fill_parent"  
  5.     android:layout_height="fill_parent"  
  6.     >  
  7.     
  8.         android:id="@+id/btn_Click"  
  9.         android:layout_width="fill_parent"  
  10.         android:layout_height="wrap_content"  
  11.         android:text="Click me...Click me...">                                         
  12.   

- AndroidManifest.xml : 註冊 範例Button Activity
  1. "1.0" encoding="utf-8"?>  
  2. "http://schemas.android.com/apk/res/android"  
  3.       package="john.controlitems.demo"  
  4.       android:versionCode="1"  
  5.       android:versionName="1.0">  
  6.     "@drawable/icon" android:label="@string/app_name">  
  7.         ".ControlItemsDemo"  
  8.                   android:label="@string/app_name">  
  9.               
  10.                 "android.intent.action.MAIN" />  
  11.                 "android.intent.category.LAUNCHER" />  
  12.               
  13.           
  14.           
  15.         ".SampleButton">  
  16.       
  17.   

顯示範例結果 : 
- Step1 : 開啟程式畫面, 點擊按鈕 "按鈕控制項" 進入範例Button Activity 
 
- Step2 : 點擊按鈕 "Click me...Click me..." 後變更Activity 標頭. 
 
(標題變更) 

沒有留言:

張貼留言

[Git 常見問題] error: The following untracked working tree files would be overwritten by merge

  Source From  Here 方案1: // x -----删除忽略文件已经对 git 来说不识别的文件 // d -----删除未被添加到 git 的路径中的文件 // f -----强制运行 #   git clean -d -fx 方案2: 今天在服务器上  gi...