激情久久久_欧美视频区_成人av免费_不卡视频一二三区_欧美精品在欧美一区二区少妇_欧美一区二区三区的

服務(wù)器之家:專注于服務(wù)器技術(shù)及軟件下載分享
分類導(dǎo)航

PHP教程|ASP.NET教程|Java教程|ASP教程|編程技術(shù)|正則表達(dá)式|C/C++|IOS|C#|Swift|Android|VB|R語(yǔ)言|JavaScript|易語(yǔ)言|vb.net|

服務(wù)器之家 - 編程語(yǔ)言 - Android - Android控件系列之Button以及Android監(jiān)聽(tīng)器使用介紹

Android控件系列之Button以及Android監(jiān)聽(tīng)器使用介紹

2020-12-16 14:52Android教程網(wǎng) Android

Button是各種UI中最常用的控件之一,它同樣也是Android開(kāi)發(fā)中最受歡迎的控件之一,用戶可以通過(guò)觸摸它來(lái)觸發(fā)一系列事件,要知道一個(gè)沒(méi)有點(diǎn)擊事件的Button是沒(méi)有任何意義的,因?yàn)槭褂谜叩墓潭ㄋ季S是見(jiàn)到它就想去點(diǎn)

學(xué)習(xí)目的:

1、掌握在android中如何建立button
2、掌握button的常用屬性
3、掌握button按鈕的點(diǎn)擊事件(監(jiān)聽(tīng)器)

button是各種ui中最常用的控件之一,它同樣也是android開(kāi)發(fā)中最受歡迎的控件之一,用戶可以通過(guò)觸摸它來(lái)觸發(fā)一系列事件,要知道一個(gè)沒(méi)有點(diǎn)擊事件的button是沒(méi)有任何意義的,因?yàn)槭褂谜叩墓潭ㄋ季S是見(jiàn)到它就想去點(diǎn)!

先看下android中普通button的樣子:

Android控件系列之Button以及Android監(jiān)聽(tīng)器使用介紹

以及點(diǎn)中button后的樣子:

Android控件系列之Button以及Android監(jiān)聽(tīng)器使用介紹

我在android控件系列之xml靜態(tài)資源中已經(jīng)強(qiáng)調(diào)了布局和代碼分離的重要性,因此本例中的button我將用這種方式去實(shí)現(xiàn):

1、為了設(shè)置button上的值(如上圖的“確定”),我們把這個(gè)值先作為一個(gè)資源存放在res\values\strings.xml中:

<string name="btntext">確定</string>

其中btntext可以視作這個(gè)值的鍵或id,確定則是它的值,我們最后綁定的是它的鍵,android系統(tǒng)會(huì)自動(dòng)根據(jù)鍵找到它的值。

2、在layout目錄下的xml布局文件中,我們添加一個(gè)button

復(fù)制代碼 代碼如下:


<button
android:layout_width="fill_parent"
android:layout_height ="wrap_content"
android:text="@string/btntext"
></button>



其中l(wèi)ayout_width和layout_height屬性是必須的,但具體的賦值可以根據(jù)您的項(xiàng)目需要

一般可以是具體的大小,即:數(shù)字+單位,如android:layout_height ="30px"

或者設(shè)置枚舉的幾種值:

fill_parent 它將自動(dòng)放大到與父控件一樣的大小,比如 android:layout_width="fill_parent"表示它的寬度將填滿父控件的橫向控件

wrap_content它將根據(jù)自己的值的占據(jù)控件來(lái)決定大小,一般使用這個(gè)值的控件會(huì)顯的較小,好處是不需要測(cè)量具體大小,它一定會(huì)正好把所有的值給顯示出來(lái)

而text屬性,則顯示了按鈕的值,如果android:layout_width用了wrap_content屬性,這個(gè)值的長(zhǎng)度將會(huì)隱式地決定按鈕的寬度。

這個(gè)例子中,我們用資源文件的btntext所對(duì)應(yīng)的值作為button的值,那么如果我們要把“確定”改成“取消”,只需要改變strings.xml中的值即可,不需要改動(dòng)任何java代碼,對(duì)于那些需要將項(xiàng)目移植為其他語(yǔ)言版本的也是非常有用,比如要將軟件賣(mài)給老外,可以將“確定”改成“ok”,而不需要重新編譯。

3、為button申明id

繼續(xù)在xml中為button添加id屬性

android:id="@+id/btnok"

+表示通過(guò)它來(lái)生成靜態(tài)資源,如果沒(méi)有+,表示使用的是指定位置的靜態(tài)資源,一般為控件賦id時(shí),都使用+這個(gè)方法

保存xml后,可以發(fā)現(xiàn)r.java中已經(jīng)有一個(gè)內(nèi)部類id,這個(gè)id類有一個(gè)靜態(tài)字段叫btnok,它的具體值您根本不必關(guān)心,我們可以在代碼中獲得它。

4、在activity中獲取到這個(gè)button實(shí)例

如果您想把每個(gè)控件id都背下來(lái),那可能很難,更合適的做法是利用r.id來(lái)獲取指定的名稱,而這個(gè)名稱又唯一對(duì)應(yīng)了控件id

一般的,如果我們希望在某個(gè)activity中使用按鈕,您第一個(gè)想到的方法應(yīng)該是findviewbyid,通過(guò)r中的靜態(tài)id,我們可以輕易獲得控件實(shí)例,至于如何尋找,這是android的事:

button btn = (button)findviewbyid(r.id.btnok);

如果系統(tǒng)不能識(shí)別,您需要導(dǎo)入android的button所在的類包:

復(fù)制代碼 代碼如下:


import android.widget.button;



您可以在activity的生命周期內(nèi),隨時(shí)尋找到這個(gè)button,但我強(qiáng)烈介意您,如果需要多次調(diào)用這個(gè)button時(shí),在oncreate中利用findviewbyid找到它后,把它記錄在activity的一個(gè)全局變量中,然后以后不需要再去find這個(gè)button,因?yàn)閒ind本身也需要時(shí)間,即使您沒(méi)有察覺(jué),但他的確需要花費(fèi)時(shí)間。因?yàn)閍ndroid運(yùn)行在手機(jī)或者平板電腦上,我建議您編碼時(shí)充分考慮代碼的簡(jiǎn)潔、效率,從而節(jié)省資源和電量。

獲取到這個(gè)button的實(shí)例后,我們可以利用代碼為他賦值,比如btn.settext("按鈕的值改變了");

5、為按鈕定制監(jiān)聽(tīng)器:

a、什么是監(jiān)聽(tīng)器?

您需要記住以下幾點(diǎn):

  1、監(jiān)聽(tīng)器是個(gè)抽象類,它包含了一個(gè)事件觸發(fā)時(shí)系統(tǒng)會(huì)去調(diào)用的函數(shù)

  2、在子類中,根據(jù)您項(xiàng)目的需要重寫(xiě)這個(gè)函數(shù)

  3、派生后的監(jiān)聽(tīng)器需要綁定到按鈕上,就像一個(gè)耳機(jī)可以發(fā)出聲音,但您不去戴它,您是聽(tīng)不到它發(fā)出的聲音的。一般的情況是這個(gè)按鈕可能需要這個(gè)監(jiān)聽(tīng)器,而另外一個(gè)按鈕需要另外一個(gè)監(jiān)聽(tīng)器,每個(gè)監(jiān)聽(tīng)器各司其職,但功能相似時(shí),也可以多個(gè)按鈕共同綁定一個(gè)監(jiān)聽(tīng)器。

  4、各種控件,都有常用的事件,如點(diǎn)擊按鈕,拖動(dòng)一個(gè)滾動(dòng)條,切換一個(gè)listview的選項(xiàng)等等,他的綁定監(jiān)聽(tīng)器的函數(shù)命名規(guī)則是seton****listener

b、為什么要這么設(shè)計(jì)?

  1、當(dāng)用戶(也可能系統(tǒng))觸發(fā)某個(gè)控件的某個(gè)事件后,往往要處理一些細(xì)節(jié),但他們不具有通用性,例如您可能點(diǎn)擊按鈕后改變它的值,也可能希望點(diǎn)擊按鈕后彈出一個(gè)網(wǎng)頁(yè),或者點(diǎn)擊按鈕后關(guān)閉當(dāng)前activity。正由于結(jié)果可能太多樣,設(shè)計(jì)者索性將實(shí)現(xiàn)完全留給android開(kāi)放者去實(shí)現(xiàn)

  2、監(jiān)聽(tīng)器其實(shí)是一種回調(diào):

它不需要您去執(zhí)行on****listener,而是系統(tǒng)觸發(fā)后自動(dòng)會(huì)去調(diào)用它,流程如下圖: 
Android控件系列之Button以及Android監(jiān)聽(tīng)器使用介紹

c、監(jiān)聽(tīng)器如何定制?

您可以使用自定義內(nèi)部類繼承監(jiān)聽(tīng)器抽象類,并實(shí)現(xiàn)抽象方法。您也可以使用java提供的抽象類的匿名實(shí)現(xiàn):

復(fù)制代碼 代碼如下:


@override
public void oncreate(bundle savedinstancestate) {
super.oncreate(savedinstancestate);
setcontentview(r.layout.main);
button btn = (button)findviewbyid(r.id.btnok);
//綁定匿名的監(jiān)聽(tīng)器,并執(zhí)行您所要在點(diǎn)擊按鈕后執(zhí)行的邏輯代碼
btn.setonclicklistener(new view.onclicklistener() {

    @override
     public void onclick(view arg0) {
     // todo auto-generated method stub
     toast.maketext(myactivity.this, "點(diǎn)擊了按鈕", toast.length_long).show();
    }
  });
}


總結(jié):

本文介紹了如何使用android中button的方法,并著重介紹了事件監(jiān)聽(tīng)器的設(shè)計(jì)目的、運(yùn)行流程和使用方法。

延伸 · 閱讀

精彩推薦
主站蜘蛛池模板: 激情在线观看视频 | 欧洲精品视频在线观看 | 国产精品久久久久久久久久了 | 国产免费视频一区二区裸体 | 成人在线视频免费看 | 中国成人在线视频 | 国产精品一区二区羞羞答答 | 伦一区二区三区中文字幕v亚洲 | 一级黄色在线观看 | 日韩一级精品 | 一区二区三区在线观看国产 | 国产精品久久久久久久久久久久久久久 | 激情小视频在线观看 | 欧美成人一级视频 | 国产一区二区精品免费 | 一区二区三区四区五区中文字幕 | 国产分类视频 | 美女黄污视频 | 成人黄色小视频在线观看 | 美女被免费网站在线软件 | 99精品视频在线看 | 国产一级免费不卡 | 女人a级毛片 | 久久不射电影网 | 成人一级视频在线观看 | 水多视频在线观看 | 羞羞的视频| 国产精品久久久久久久久粉嫩 | 午夜视频在线观 | 国产精品久久久久久久久久10秀 | 国产毛毛片一区二区三区四区 | 中文字幕天堂在线 | 精品欧美一区二区精品久久 | 亚洲骚综合 | 中国一级免费视频 | 久久久一区二区三区四区 | 制服丝袜成人动漫 | 欧美巨根 | 久久精品成人影院 | 亚洲成人免费网站 | 7777网站 |