亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 系統 > Android > 正文

Android控件系列之Button以及Android監聽器使用介紹

2020-04-11 12:43:17
字體:
來源:轉載
供稿:網友
學習目的:

1、掌握在Android中如何建立Button
2、掌握Button的常用屬性
3、掌握Button按鈕的點擊事件(監聽器)

Button是各種UI中最常用的控件之一,它同樣也是Android開發中最受歡迎的控件之一,用戶可以通過觸摸它來觸發一系列事件,要知道一個沒有點擊事件的Button是沒有任何意義的,因為使用者的固定思維是見到它就想去點!

先看下Android中普通Button的樣子:

以及點中Button后的樣子:

我在Android控件系列之XML靜態資源中已經強調了布局和代碼分離的重要性,因此本例中的Button我將用這種方式去實現:

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

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

其中btnText可以視作這個值的鍵或ID,確定則是它的值,我們最后綁定的是它的鍵,Android系統會自動根據鍵找到它的值。

2、在layout目錄下的XML布局文件中,我們添加一個Button

復制代碼 代碼如下:

<Button
android:layout_width="fill_parent"
android:layout_height ="wrap_content"
android:text="@string/btnText"
></Button>


其中layout_width和layout_height屬性是必須的,但具體的賦值可以根據您的項目需要

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

或者設置枚舉的幾種值:

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

wrap_content它將根據自己的值的占據控件來決定大小,一般使用這個值的控件會顯的較小,好處是不需要測量具體大小,它一定會正好把所有的值給顯示出來

而Text屬性,則顯示了按鈕的值,如果android:layout_width用了wrap_content屬性,這個值的長度將會隱式地決定按鈕的寬度。

這個例子中,我們用資源文件的btnText所對應的值作為Button的值,那么如果我們要把“確定”改成“取消”,只需要改變strings.xml中的值即可,不需要改動任何java代碼,對于那些需要將項目移植為其他語言版本的也是非常有用,比如要將軟件賣給老外,可以將“確定”改成“OK”,而不需要重新編譯。

3、為Button申明ID

繼續在XML中為Button添加ID屬性

android:id="@+id/btnOK"

+表示通過它來生成靜態資源,如果沒有+,表示使用的是指定位置的靜態資源,一般為控件賦ID時,都使用+這個方法

保存XML后,可以發現R.java中已經有一個內部類id,這個id類有一個靜態字段叫btnOK,它的具體值您根本不必關心,我們可以在代碼中獲得它。

4、在Activity中獲取到這個Button實例

如果您想把每個控件ID都背下來,那可能很難,更合適的做法是利用R.id來獲取指定的名稱,而這個名稱又唯一對應了控件ID

一般的,如果我們希望在某個Activity中使用按鈕,您第一個想到的方法應該是findViewById,通過R中的靜態ID,我們可以輕易獲得控件實例,至于如何尋找,這是Android的事:

Button btn = (Button)findViewById(R.id.btnOK);

如果系統不能識別,您需要導入Android的Button所在的類包:

復制代碼 代碼如下:

import android.widget.Button;


您可以在Activity的生命周期內,隨時尋找到這個Button,但我強烈介意您,如果需要多次調用這個Button時,在onCreate中利用findViewById找到它后,把它記錄在Activity的一個全局變量中,然后以后不需要再去find這個Button,因為find本身也需要時間,即使您沒有察覺,但他的確需要花費時間。因為Android運行在手機或者平板電腦上,我建議您編碼時充分考慮代碼的簡潔、效率,從而節省資源和電量。

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

5、為按鈕定制監聽器:

A、什么是監聽器?

您需要記住以下幾點:

  1、監聽器是個抽象類,它包含了一個事件觸發時系統會去調用的函數

  2、在子類中,根據您項目的需要重寫這個函數

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

  4、各種控件,都有常用的事件,如點擊按鈕,拖動一個滾動條,切換一個ListView的選項等等,他的綁定監聽器的函數命名規則是setOn****Listener

B、為什么要這么設計?

  1、當用戶(也可能系統)觸發某個控件的某個事件后,往往要處理一些細節,但他們不具有通用性,例如您可能點擊按鈕后改變它的值,也可能希望點擊按鈕后彈出一個網頁,或者點擊按鈕后關閉當前Activity。正由于結果可能太多樣,設計者索性將實現完全留給Android開放者去實現

  2、監聽器其實是一種回調:

它不需要您去執行On****Listener,而是系統觸發后自動會去調用它,流程如下圖: 


C、監聽器如何定制?

您可以使用自定義內部類繼承監聽器抽象類,并實現抽象方法。您也可以使用Java提供的抽象類的匿名實現:
復制代碼 代碼如下:

@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
Button btn = (Button)findViewById(R.id.btnOK);
//綁定匿名的監聽器,并執行您所要在點擊按鈕后執行的邏輯代碼
btn.setOnClickListener(new View.OnClickListener() {

    @Override
     public void onClick(View arg0) {
     // TODO Auto-generated method stub
     Toast.makeText(MyActivity.this, "點擊了按鈕", Toast.LENGTH_LONG).show();
    }
  });
}

總結:

本文介紹了如何使用Android中Button的方法,并著重介紹了事件監聽器的設計目的、運行流程和使用方法。
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
国模精品一区二区三区色天香| 国产欧美精品va在线观看| 欧美成人中文字幕在线| 欧美一区二区三区免费视| 久久精品久久精品亚洲人| 亚洲综合精品伊人久久| 日韩欧美成人网| 欧美视频在线观看 亚洲欧| 国产久一一精品| 国产精品你懂得| 国产精品av电影| 日韩久久午夜影院| 中文字幕亚洲综合久久| 欧美亚洲国产日本| 一本一本久久a久久精品牛牛影视| 亚洲国产成人久久综合| 日产日韩在线亚洲欧美| 国产亚洲精品美女久久久| 成人激情电影一区二区| 国产精品91免费在线| 欧美老肥婆性猛交视频| 久久99久久久久久久噜噜| 久久久久久久久久av| 日韩第一页在线| 少妇高潮久久77777| 亚洲sss综合天堂久久| 午夜精品久久久久久久99热浪潮| 久久资源免费视频| 高清欧美性猛交| 日韩av在线最新| 国产午夜精品美女视频明星a级| 欧美日韩高清在线观看| 亚洲91精品在线观看| 97超级碰碰碰久久久| 欧美在线中文字幕| 欧美日韩在线视频首页| 少妇av一区二区三区| 欧美激情va永久在线播放| 在线观看免费高清视频97| 岛国精品视频在线播放| 欧美肥老太性生活视频| 久久在精品线影院精品国产| 欧美成人午夜免费视在线看片| 色综合五月天导航| 国产成人在线视频| 亚洲人成电影网站色xx| 欧美日韩在线视频观看| 91精品久久久久久久久不口人| 日韩电影免费观看中文字幕| 色吧影院999| 在线观看不卡av| 久久久久久亚洲| 亚洲图片制服诱惑| 欧亚精品在线观看| 日本高清不卡的在线| 精品福利免费观看| 欧美丰满少妇xxxxx| 中文字幕亚洲天堂| 日韩av色综合| 欧美影院成年免费版| 日韩免费av一区二区| 国产成人精品在线播放| 久久久久久久亚洲精品| 亚洲国产一区二区三区四区| 欧美日韩国产一区中文午夜| 日韩大陆欧美高清视频区| 国产精品高潮呻吟久久av黑人| 亚洲香蕉成视频在线观看| 亚洲精品视频久久| 欧美一级大片在线免费观看| 精品日本美女福利在线观看| 国产午夜精品全部视频播放| 日韩在线免费观看视频| 久久免费福利视频| 国产suv精品一区二区三区88区| 91免费视频网站| 亚洲精品日韩欧美| 亚洲日韩中文字幕| 亚洲欧洲在线观看| 国产免费观看久久黄| 日韩欧美黄色动漫| 亚洲精品99久久久久| 午夜精品久久久久久久白皮肤| 懂色av中文一区二区三区天美| 久久久久久久香蕉网| 欧美国产视频日韩| 国产亚洲精品久久久优势| 91在线国产电影| 日本国产欧美一区二区三区| 国产精品久久久久久av下载红粉| 欧美日韩国产综合视频在线观看中文| 日韩高清电影免费观看完整| 成人午夜在线视频一区| 91成人在线视频| 九九久久久久99精品| 欧美精品一本久久男人的天堂| 久久99热这里只有精品国产| 欧美成人sm免费视频| 欧美成人网在线| 欧美一级在线播放| 欧美国产日韩在线| 欧美劲爆第一页| 国产精品美女免费视频| 欧美在线观看网站| 国产精品最新在线观看| 欧美国产精品人人做人人爱| 欧美高清理论片| 欧美一性一乱一交一视频| 国产激情久久久久| 91经典在线视频| 尤物精品国产第一福利三区| 欧美成人精品xxx| 久久久久99精品久久久久| 国产精品夫妻激情| 国产成人精品在线| 国产日韩精品视频| 欧美怡春院一区二区三区| 日本亚洲欧洲色| 欧美一区二区三区精品电影| 成人激情免费在线| 国产精品亚洲美女av网站| 成人444kkkk在线观看| 久久久久北条麻妃免费看| 国产精品青青在线观看爽香蕉| 亚洲国产精品99久久| 日韩av影院在线观看| 成人美女免费网站视频| 亚洲国产精品999| 国产亚洲xxx| 成人国产精品色哟哟| 成人av资源在线播放| 中文字幕亚洲第一| 国产日产久久高清欧美一区| 亚洲xxxx做受欧美| 国产精品欧美一区二区| 国产成人精品网站| 午夜伦理精品一区| 一本色道久久综合亚洲精品小说| 91精品久久久久久综合乱菊| 国产精品美女免费视频| 原创国产精品91| 日本精品性网站在线观看| 久久久精品一区二区三区| 色婷婷**av毛片一区| 久久在线免费观看视频| 欧美成人激情视频| 久久久午夜视频| 亚洲人成五月天| 91亚洲精品久久久久久久久久久久| 欧美主播福利视频| 91社区国产高清| 国产综合福利在线| 亚洲成人黄色网| 亚洲影院高清在线| 欧美激情videoshd| 美女精品久久久| 欧美在线视频一区| 欧洲亚洲妇女av| 中文字幕精品国产| 91综合免费在线| 国产成人亚洲综合91| 91精品成人久久| 97在线视频观看| 国产精品一二三视频|