国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 系統(tǒng) > Android > 正文

Android開發(fā)-之監(jiān)聽button點擊事件的多種方法

2019-12-12 04:33:24
字體:
來源:轉載
供稿:網(wǎng)友

 在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)。

發(fā)表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發(fā)表
主站蜘蛛池模板: 宜宾县| 龙门县| 连山| 霍林郭勒市| 东源县| 邢台县| 嵊州市| 会宁县| 上犹县| 甘泉县| 巩义市| 江津市| 扎兰屯市| 辽宁省| 冕宁县| 县级市| 汉川市| 安岳县| 濮阳县| 库车县| 额济纳旗| 图片| 象山县| 邹城市| 老河口市| 鄂托克前旗| 论坛| 莱芜市| 翼城县| 昭平县| 延川县| 望都县| 石城县| 西畴县| 色达县| 怀宁县| 雅江县| 个旧市| 筠连县| 毕节市| 玛沁县|