自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

Android入門到精通之界面編程從Button說起

移動開發(fā) Android
Activity是單獨的,用于處理用戶操作。幾乎所有的Activity都要和用戶打交道,所以Activity類創(chuàng)建了一個窗口,開發(fā)人員可以通過setContentView(View)接口把UI放到Activity創(chuàng)建的窗口上,當Activity指向全屏窗口時,也可以用其他方式實現(xiàn):作為漂浮窗口(通過windowIsFloating的主題集合)或者嵌入到其他的Activity(使用ActivityGroup

Android 界面編程有兩種基本的方法,一種是在代碼中,動態(tài)創(chuàng)建一個個組件,及把這些組件用Layout來進行組合成復雜的界面展現(xiàn)。一種是用圖形化的方式來編寫 布局Layout,這些布局被保存在XML文件中,會編譯成資源,被程序中的Activity來加載(setContentView()), 再通過findViewById方式來獲得每一個界面組件的引用進行操作。對于大多數(shù)人來說,喜歡最直觀的方式,既代碼中動態(tài)生成的方式。我們就先從這里說起,至于可視化編程及布局資源的方式以后專門來講述。

一,布局管理(Layout)

每一個界面組件都是View的子類,都可以單獨占用一個屏幕,但是真正的有用的界面都是這些組件的組合,在Android中都是用各種Layout來進行布局管理,這與傳統(tǒng)的J2SE中的一些AWT,SWING界面方式基本相同,這里就不多說。

二,一個單獨的界面元素:

在前面說到Hello World例子中,講過這樣一段代碼。在Activity中.

  1. public class HelloActivity extends Activity {  
  2.    /** Called when the activity is first created. */  
  3.    @Override  
  4.    public void onCreate(Bundle savedInstanceState) {  
  5.        super.onCreate(savedInstanceState);  
  6.        TextView tv = new TextView(this);  
  7.        tv.setText("Hello, World!");  
  8.        this.setContentView(tv);  
  9.         
  10.    }  

這里并沒有用到Layout,這就是單獨的組件方式。也可以改為:

 

  1. super.onCreate(savedInstanceState);  
  2. Button btn = new Button(this);  
  3. btn.setText("TestButton");  
  4. this.setContentView(btn); 

編譯運行,會有一個全屏的Button,當然這不是你想要的實用的界面.那我們就用Layout來布局

  1. super.onCreate(savedInstanceState);  
  2. Button btn = new Button(this);  
  3. btn.setText("TestButton");  
  4. Button btn2 = new Button(this);  
  5. btn2.setText("TestButton2");  
  6. LinearLayout layout = new LinearLayout(this);  
  7. layout.setOrientation(LinearLayout.VERTICAL);  
  8. layout.addView(btn);  
  9. layout.addView(btn2);  
  10. this.setContentView(layout); 

編譯運行,你就可以看到了兩個上下排列的按鈕,當然對于布局管理器的使用,做過PC 上AWT,SWING的人都不陌生,這里就不贅述。

那如何響應事件呢: 大家猜一猜?想必大家不難猜到,在AWT中,在手機的J2ME中,都是用Listener 來處理事件響應,Android也未能脫俗。這與Blackberry,Symbian中的Observer是同一個道理。都是使用了設計模式的觀察者模式。下面來看一個能響應事件的例子。

  1. import android.app.Activity; import android.os.Bundle;  
  2. import android.view.View;  
  3. import android.view.View.OnClickListener;  
  4. import android.widget.Button;  
  5. import android.widget.LinearLayout;  
  6.  
  7. public class HelloActivity extends Activity implements OnClickListener {  
  8.   Button btn = null;  
  9.   Button btn2 = null;  
  10.     public void onClick(View v) {      
  11.   if (v ==  btn)  
  12.   {  
  13.       this.setTitle("You Clicked Button1");        
  14.   }  
  15.   if (v ==  btn2)  
  16.   {  
  17.       this.setTitle("You Clicked Button2");  
  18.   }    
  19.  }   
  20.     @Override  
  21.     public void onCreate(Bundle savedInstanceState) {  
  22.         super.onCreate(savedInstanceState);  
  23.         btn = new Button(this);  
  24.         btn2 = new Button(this);  
  25.         btn.setText("TestButton1");          
  26.         btn2.setText("TestButton2");  
  27.         btn.setOnClickListener(this);  
  28.         btn2.setOnClickListener(this);  
  29.         LinearLayout layout = new LinearLayout(this);  
  30.         layout.setOrientation(LinearLayout.VERTICAL);  
  31.         layout.addView(btn);  
  32.         layout.addView(btn2);  
  33.         this.setContentView(layout);         
  34.     }  

步驟是:

1、生成兩個Button,配置Click事件監(jiān)聽者為HelloActivity ,此類實現(xiàn)了OnClickListener接口。

2、放入布局,按布局顯示兩個Button

3、按下其中一個Button,生成Click事件,調用HelloActivity 的OnClick接口函數(shù)。

4、對于View參數(shù)的值,判斷是哪個View(Button)。改寫Activity的Titile內容。注意,可別去對比View.getId(),缺省情況下,每個組件的Id值都為-1,除非人為設定Id值,用可視化編程時,為自動為其生成一個Id值。

【編輯推薦】

Activity頁面切換的效果

Android四種Activity的加載模式

Android開發(fā):Activity之間的傳值

Android應用之Activity傳參數(shù)與跳轉

如何在Android模擬器中安裝和卸載程序

責任編輯:zhaolei 來源: 互聯(lián)網
相關推薦

2012-02-29 00:49:06

Linux學習

2010-02-06 15:31:18

ibmdwAndroid

2009-07-22 14:55:16

ibmdwAndroid

2016-12-08 22:39:40

Android

2017-05-09 08:48:44

機器學習

2022-06-10 08:17:52

HashMap鏈表紅黑樹

2025-02-24 10:07:10

2010-11-08 10:20:18

2024-02-26 08:52:20

Python傳遞函數(shù)參數(shù)參數(shù)傳遞類型

2022-09-02 15:11:18

開發(fā)工具

2024-11-25 18:37:09

2023-10-13 08:23:05

2009-07-03 18:49:00

網吧綜合布線

2024-04-11 14:00:28

2011-10-26 20:47:36

ssh 安全

2024-06-07 08:51:50

OpenPyXLPythonExcel文件

2009-03-19 13:36:53

SSH安全通道遠程

2025-03-21 14:31:14

NumPyPython數(shù)組

2017-01-09 09:34:03

Docker容器傳統(tǒng)虛擬機

2023-09-22 22:43:26

eval()Python
點贊
收藏

51CTO技術棧公眾號