Button和ImageButton控件及其監(jiān)聽事件的實(shí)現(xiàn)方法

Button和ImageButton

Paste_Image.png
Paste_Image.png

Button下的文字,數(shù)字,字符串一般不直接在xml文件中寫,建議到values下的string中建立對(duì)應(yīng)字符串,例如在values->string下新建


Paste_Image.png

然后去xml的Button中

Paste_Image.png
  • ImageButton是用于在按鈕上顯示圖片的。所以是沒有android:text這個(gè)屬性的。并且如果在布局文件中寫上android:text="我是一個(gè)按鈕",在android 4.4環(huán)境中是不會(huì)看到任何效果的

onClick事件

Paste_Image.png
Paste_Image.png
匿名內(nèi)部類的實(shí)現(xiàn)

(View 是所有控件的父類)

  • 初始化當(dāng)前所需控件,例如private Button loginButton;
  • findViewById--返回的是一個(gè)View,故需要強(qiáng)制轉(zhuǎn)換成所需控件類型,例如loginButton= (Button)findViewById(R.id.button1);
  • findViewById是如何查找對(duì)應(yīng)view的id的?gen目錄下中自動(dòng)生成的R文件中有一個(gè)類id,id類中自動(dòng)為每個(gè)控件創(chuàng)建了一個(gè)id
  • 設(shè)置Button的監(jiān)聽器,通過(guò)監(jiān)聽器實(shí)現(xiàn)我們點(diǎn)擊Button要操作的事情(通過(guò)匿名內(nèi)部類方式實(shí)現(xiàn))
    loginButton.setOnClickListener...
Paste_Image.png

(直接在里面new一個(gè)匿名內(nèi)部類)

獨(dú)立類的實(shí)現(xiàn)
  • 在onCreate()方法外實(shí)現(xiàn)一個(gè)外部類,繼承自(implements--因?yàn)镺nClickListener是一個(gè)接口不是一個(gè)類,所以不用extends)OnClickListener,然后再在這個(gè)類里面寫邏輯,該類為其他按鈕的父類,比如你將在一個(gè)Activity中實(shí)現(xiàn)10個(gè)按鈕,而這10個(gè)按鈕需要實(shí)現(xiàn)同一個(gè)功能,就可以在父類中寫這個(gè)公用邏輯,然后再內(nèi)部類中寫各個(gè)按鈕的其他不同邏輯, 這樣避免了代碼的冗余
Paste_Image.png
  • v代表當(dāng)前點(diǎn)擊按鈕的對(duì)象,哪個(gè)按鈕被點(diǎn)擊了它會(huì)把這個(gè)按鈕的對(duì)象傳給v。
    外部類的這種用法,按鈕不僅會(huì)執(zhí)行子類中的onClick()方法,還會(huì)觸發(fā)父類中的onClick()方法
Paste_Image.png
  • 注意到里面還用到一個(gè)v.setAlpha(0.5f),該方法設(shè)置透明度,點(diǎn)擊按鈕后按鈕透明
Paste_Image.png
接口方式實(shí)現(xiàn)監(jiān)聽事件

1.在當(dāng)前Activity類上通過(guò)implement onClickListener實(shí)現(xiàn)該接口
Paste_Image.png

此時(shí)會(huì)對(duì)應(yīng)生成一個(gè)onClick方法


Paste_Image.png

2.將監(jiān)聽器綁定到Button上
實(shí)例:private ImageButton imgBt;

初始化:imgBt= (ImageButton)findViewById(R.id.imageButton1);
3.給該Button設(shè)置監(jiān)聽器
imgBt.setOnClickListener(this);

this訪問當(dāng)前類的接口的一個(gè)對(duì)象,當(dāng)做這件事后imgBt.setOnClickListener(this);onClick事件就綁定到Button上去了,此時(shí)點(diǎn)擊Button就會(huì)觸發(fā)當(dāng)前實(shí)現(xiàn)的onClick方法
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容