Android Button應(yīng)用法則
我們?cè)?jīng)在其他文章中為大家詳細(xì)介紹了一些可視化編程以及基于界面的編程方法,那么今天大家將會(huì)了解到有關(guān)Android Button的具體應(yīng)用,以此更進(jìn)一步加深對(duì)界面編程的認(rèn)知程度。#t#
Android 界面編程有兩種基本的方法,一種是在代碼中,動(dòng)態(tài)創(chuàng)建一個(gè)個(gè)組件,及把這些組件用Layout來(lái)進(jìn)行組合成復(fù)雜的界面展現(xiàn)。一種是用圖形化的方式來(lái)編寫(xiě) 布局Layout,這些布局被保存在XML文件中,會(huì)編譯成資源,被程序中的Activity來(lái)加載(setContentView()), 再通過(guò)findViewById方式來(lái)獲得每一個(gè)界面組件的引用進(jìn)行操作。對(duì)于大多數(shù)人來(lái)說(shuō),喜歡最直觀的方式,既代碼中動(dòng)態(tài)生成的方式。我們就先從這里說(shuō)起,至于可視化編程及布局資源的方式以后專門(mén)來(lái)講述。
一,Android Button布局管理(Layout)
每一個(gè)界面組件都是View的子類,都可以單獨(dú)占用一個(gè)屏幕,但是真正的有用的界面都是這些組件的組合,在Android中都是用各種Layout來(lái)進(jìn)行布局管理,這與傳統(tǒng)的J2SE中的一些AWT,SWING界面方式基本相同,這里就不多說(shuō)。
二,Android Button一個(gè)單獨(dú)的界面元素:
在前面說(shuō)到Hello World例子中,講過(guò)這樣一段代碼。在Activity中.
- public class HelloActivity extends Activity {
- /** Called when the activity is first created. */
- @Override
- public void onCreate(Bundle savedInstanceState) {
- super.onCreate(savedInstanceState);
- TextView tv = new TextView(this);
- tv.setText("Hello, World!");
- this.setContentView(tv);
- }
- }
這里并沒(méi)有用到Layout,這就是單獨(dú)的組件方式。也可以改為:
- super.onCreate(savedInstanceState);
- Button btn = new Button(this);
- btn.setText("TestButton");
- this.setContentView(btn);
編譯運(yùn)行,會(huì)有一個(gè)全屏的Button,當(dāng)然這不是你想要的實(shí)用的界面.那我們就用Layout來(lái)布局
- super.onCreate(savedInstanceState);
- Button btn = new Button(this);
- btn.setText("TestButton");
- Button btn2 = new Button(this);
- btn2.setText("TestButton2");
- LinearLayout layout = new LinearLayout(this);
- layout.setOrientation(LinearLayout.VERTICAL);
- layout.addView(btn);
- layout.addView(btn2);
- this.setContentView(layout);
編譯運(yùn)行,你就可以看到了兩個(gè)上下排列的Android Button,當(dāng)然對(duì)于布局管理器的使用,做過(guò)PC 上AWT,SWING的人都不陌生,這里就不贅述。
那如何響應(yīng)事件呢: 大家猜一猜?想必大家不難猜到,在AWT中,在手機(jī)的J2ME中,都是用Listener 來(lái)處理事件響應(yīng),Android也未能脫俗。這與Blackberry,Symbian中的Observer是同一個(gè)道理。都是使用了設(shè)計(jì)模式的觀察者模式。下面來(lái)看一個(gè)能響應(yīng)事件的例子。
- import android.app.Activity;
- import android.os.Bundle;
- import android.view.View;
- import android.view.View.OnClickListener;
- import android.widget.Button;
- import android.widget.LinearLayout;
- public class HelloActivity extends Activity implements OnClickListener {
- Button btn = null;
- Button btn2 = null;
- public void onClick(View v) {
- if (v == btn)
- {
- this.setTitle("You Clicked Button1");
- }
- if (v == btn2)
- {
- this.setTitle("You Clicked Button2");
- }
- }
- @Override
- public void onCreate(Bundle savedInstanceState) {
- super.onCreate(savedInstanceState);
- btn = new Button(this);
- btn2 = new Button(this);
- btn.setText("TestButton1");
- btn2.setText("TestButton2");
- btn.setOnClickListener(this);
- btn2.setOnClickListener(this);
- LinearLayout layout = new LinearLayout(this);
- layout.setOrientation(LinearLayout.VERTICAL);
- layout.addView(btn);
- layout.addView(btn2);
- this.setContentView(layout);
- }
- }
Android Button操作步驟是:
一,生成兩個(gè)Button,配置Click事件監(jiān)聽(tīng)者為HelloActivity ,此類實(shí)現(xiàn)了OnClickListener接口。
二,放入布局,按布局顯示兩個(gè)Button
三,按下其中一個(gè)Button,生成Click事件,調(diào)用HelloActivity 的OnClick接口函數(shù)。
四,對(duì)于View參數(shù)的值,判斷是哪個(gè)View(Button)。改寫(xiě)Activity的Titile內(nèi)容。注意,可別去對(duì)比View.getId(),缺省情況下,每個(gè)組件的Id值都為-1,除非人為設(shè)定Id值,用可視化編程時(shí),為自動(dòng)為其生成一個(gè)Id值。