在Android下,事件的發(fā)生是在監(jiān)聽器下進行,android系統(tǒng)可以響應按鍵事件和觸摸屏事件,本文主要介紹了button點擊事件的方法
一、實現(xiàn)button點擊事件的方法
實現(xiàn)button點擊事件的監(jiān)聽方法有很多種,這里總結了常用的四種方法:
1、匿名內部類
2、外部類(獨立類)
3、實現(xiàn)OnClickListener接口
4、添加XML屬性
每一種方法都有它的優(yōu)點也有它的不足,那么接下來就來詳細的講解這四個實現(xiàn)方法
二、具體實現(xiàn)
1、匿名內部類:
在Android開發(fā)中我們會經(jīng)常看到各種匿名內部類的使用,那么在實現(xiàn)button點擊事件的時候也可以用匿名內部類。
這樣使用的好處是:
1)不需要重新寫一個類,直接在new的時候去實現(xiàn)想實現(xiàn)的方法,很方便。
2)當別的地方都用不到這個方法的時候使用匿名內部類
3)高內聚,高內聚是設計原則之一,匿名內部類的特性之一就是擁有高內聚。
但是也有不足的地方:
1)當別的地方也需要同樣的一個方法時還要重新再在那個地方寫一次匿名內部類,這樣使得代碼的冗余性很高。
2)不方便后期的維護
a、添加一個按鈕
<Button android:id="@+id/button1" android:layout_width="fill_parent" android:layout_height="wrap_content" android:layout_alignParentLeft="true" android:layout_below="@+id/textView1" android:layout_marginTop="20dp" android:text="方法一:匿名內部類" />
b、回到MainActivity中實現(xiàn)
public class MainActivity extends Activity{ private Button btn1; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); /* * 方法一:使用匿名內部類實現(xiàn)button按鈕的 */ //綁定button按鈕 btn1 = (Button) findViewById(R.id.button1); //監(jiān)聽button事件 btn1.setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { Toast tot = Toast.makeText( MainActivity.this, "匿名內部類實現(xiàn)button點擊事件", Toast.LENGTH_LONG); tot.show(); } }); }}c、運行結果
2、獨立類(外部類):
重新寫一個獨立的類來實現(xiàn)業(yè)務邏輯或是想要的效果
這樣寫的好處是:
1)一定情況下可以方便維護
2)可以降低代碼的冗余性,可以同時使用到多個地方
不足的地方是:
1)當只使用一次時浪費資源,程序的性能不高
2)當有很多個方法時代碼的可讀性不高,此時不方便維護
a、添加一個button按鈕
<Button android:id="@+id/button2" android:layout_width="fill_parent" android:layout_height="wrap_content" android:layout_alignRight="@+id/button1" android:layout_below="@+id/button1" android:layout_marginTop="20dp" android:text="方法二:獨立類" />
b、回到MainActivity中實現(xiàn),外部類中需要實現(xiàn)OnClickListener接口,并重寫其中的方法
public class MainActivity extends Activity { private Button btn2; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); /* * 方法二:獨立類實現(xiàn)button實現(xiàn) */ btn2 = (Button) findViewById(R.id.button2); btn2.setOnClickListener(new btn2Click(this)); }}public class btn2Click implements OnClickListener { private Context context; //重載btn2Click方法 public btn2Click(Context ct){ this.context=ct; } @Override public void onClick(View v) { Toast tot = Toast.makeText( context, "獨立類實現(xiàn)button點擊事件", Toast.LENGTH_LONG); tot.show(); }}c、運行效果
3、實現(xiàn)OnClickListener接口:
與獨立類實現(xiàn)的原理是一樣的,優(yōu)點和缺陷也是大徑相同的,實現(xiàn)OnClickListener接口的時候實現(xiàn)它其中的onClick方法
a、添加button按鈕
<Button android:id="@+id/button3" android:layout_width="fill_parent" android:layout_height="wrap_content" android:layout_alignRight="@+id/button2" android:layout_below="@+id/button2" android:layout_marginTop="20dp" android:text="方法三:實現(xiàn)接口" />
b、回到MainActivity中實現(xiàn)
public class MainActivity extends Activity implements OnClickListener { private Button btn3; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); /* * 方法三:實現(xiàn)OnClickListener接口 */ btn3 = (Button) findViewById(R.id.button3); btn3.setOnClickListener(this); } //實現(xiàn)OnClickListener接口中的方法 @Override public void onClick(View v) { Toast tot = Toast.makeText( MainActivity.this, "接口OnClickListener實現(xiàn)button點擊事件", Toast.LENGTH_LONG); tot.show(); }}c、運行效果
4、添加XML屬性:
我們可以給XML添加一個onClick屬性來實現(xiàn)點擊事件的監(jiān)控
這樣的好處是:更加便捷,代碼量能夠減少
但是不足的地方是:每一次維護的時候都要去XML里面改源碼,是不是很不好維護很麻煩呢?
a、添加一個button按鈕,并添加onClick按鈕
<Button android:id="@+id/button4" android:layout_width="fill_parent" android:layout_height="wrap_content" android:layout_alignLeft="@+id/button3" android:layout_below="@+id/button3" android:layout_marginTop="20dp" android:onClick="btn4Click" android:text="方法四:添加xml屬性" />
b、回到MainActivity中實現(xiàn)onClick按鈕
/* * 方法四:添加XML屬性 */ public void btn4Click(View v){ Toast tot = Toast.makeText( MainActivity.this, "添加XML標簽實現(xiàn)button點擊事件", Toast.LENGTH_LONG); tot.show(); }c、運行結果:
三、總結:
1、在實現(xiàn)監(jiān)聽的時候都是需要兩步走:
1)綁定button按鈕
2)監(jiān)聽button事件
1、具體使用什么方法去實現(xiàn)button按鈕點擊事件的監(jiān)聽要看具體的需求,都各有各的好處和不足。如果只使用一次則推薦使用內部類的方法;如果多次使用則使用外部類的方法;實現(xiàn)接口的方法可以在原本的類中實現(xiàn);但是在XML里面添加屬性的方法時不推薦的,畢竟很不好去維護。
2、內部類的使用在Android開發(fā)中是經(jīng)常用到的,所以非常的重要。java中關于內部類的使用詳解://m.survivalescaperooms.com/article/36125.htm
3、Android開發(fā)中有很多按鈕,但是監(jiān)聽的方法常用的都是這幾種,所以能夠舉一反三,這也是為什么寫這個的原因
4、Toast是Android中一個實現(xiàn)的效果,是不是經(jīng)常看到這個效果呢?在寫監(jiān)聽的時候順便也把Toast一起學了,一舉兩得哈哈哈!!
PS:看似零零散散的知識點,但所有的知識點都是一條連線的,任何行業(yè)的知識點都是如此,就好比先有了數(shù)字才出現(xiàn)算數(shù),先出現(xiàn)了英文字母才有了單詞一樣。。。
以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持武林網(wǎng)。
新聞熱點
疑難解答