欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Android開(kāi)發(fā)-之監(jiān)聽(tīng)button點(diǎn)擊事件的多種方法

 更新時(shí)間:2016年11月22日 09:20:15   作者:易小怪獸_iKing  
本篇文章主要是介紹了Android開(kāi)發(fā)之監(jiān)聽(tīng)button點(diǎn)擊事件的方法,Android開(kāi)發(fā)-之監(jiān)聽(tīng)button點(diǎn)擊事件的方法總結(jié),有興趣的可以了解一下。

 在Android下,事件的發(fā)生是在監(jiān)聽(tīng)器下進(jìn)行,android系統(tǒng)可以響應(yīng)按鍵事件和觸摸屏事件,本文主要介紹了button點(diǎn)擊事件的方法

一、實(shí)現(xiàn)button點(diǎn)擊事件的方法

實(shí)現(xiàn)button點(diǎn)擊事件的監(jiān)聽(tīng)方法有很多種,這里總結(jié)了常用的四種方法:

1、匿名內(nèi)部類(lèi)

2、外部類(lèi)(獨(dú)立類(lèi))

3、實(shí)現(xiàn)OnClickListener接口

4、添加X(jué)ML屬性

每一種方法都有它的優(yōu)點(diǎn)也有它的不足,那么接下來(lái)就來(lái)詳細(xì)的講解這四個(gè)實(shí)現(xiàn)方法 

二、具體實(shí)現(xiàn)

1、匿名內(nèi)部類(lèi):

在Android開(kāi)發(fā)中我們會(huì)經(jīng)??吹礁鞣N匿名內(nèi)部類(lèi)的使用,那么在實(shí)現(xiàn)button點(diǎn)擊事件的時(shí)候也可以用匿名內(nèi)部類(lèi)。

這樣使用的好處是:

1)不需要重新寫(xiě)一個(gè)類(lèi),直接在new的時(shí)候去實(shí)現(xiàn)想實(shí)現(xiàn)的方法,很方便。

2)當(dāng)別的地方都用不到這個(gè)方法的時(shí)候使用匿名內(nèi)部類(lèi)

3)高內(nèi)聚,高內(nèi)聚是設(shè)計(jì)原則之一,匿名內(nèi)部類(lèi)的特性之一就是擁有高內(nèi)聚。

但是也有不足的地方:

1)當(dāng)別的地方也需要同樣的一個(gè)方法時(shí)還要重新再在那個(gè)地方寫(xiě)一次匿名內(nèi)部類(lèi),這樣使得代碼的冗余性很高。

2)不方便后期的維護(hù)

a、添加一個(gè)按鈕

 <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="方法一:匿名內(nèi)部類(lèi)" />

b、回到MainActivity中實(shí)現(xiàn)

public class MainActivity extends Activity{
  
  private Button btn1;
  
  @Override
  protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    
    /*
     * 方法一:使用匿名內(nèi)部類(lèi)實(shí)現(xiàn)button按鈕的
     */
    //綁定button按鈕
    btn1 = (Button) findViewById(R.id.button1);
    
    //監(jiān)聽(tīng)button事件
    btn1.setOnClickListener(new OnClickListener() {
      @Override
      public void onClick(View v) {
        Toast tot = Toast.makeText(
            MainActivity.this,
            "匿名內(nèi)部類(lèi)實(shí)現(xiàn)button點(diǎn)擊事件",
            Toast.LENGTH_LONG);
        tot.show();
      }
    });
  }
}

c、運(yùn)行結(jié)果

2、獨(dú)立類(lèi)(外部類(lèi)):

重新寫(xiě)一個(gè)獨(dú)立的類(lèi)來(lái)實(shí)現(xiàn)業(yè)務(wù)邏輯或是想要的效果

這樣寫(xiě)的好處是:

1)一定情況下可以方便維護(hù)

2)可以降低代碼的冗余性,可以同時(shí)使用到多個(gè)地方

不足的地方是:

1)當(dāng)只使用一次時(shí)浪費(fèi)資源,程序的性能不高

2)當(dāng)有很多個(gè)方法時(shí)代碼的可讀性不高,此時(shí)不方便維護(hù)

a、添加一個(gè)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="方法二:獨(dú)立類(lèi)" />

b、回到MainActivity中實(shí)現(xiàn),外部類(lèi)中需要實(shí)現(xiàn)OnClickListener接口,并重寫(xiě)其中的方法

public class MainActivity extends Activity {
  
  private Button btn2;

  
  @Override
  protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    
    /*
     * 方法二:獨(dú)立類(lèi)實(shí)現(xiàn)button實(shí)現(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,
        "獨(dú)立類(lèi)實(shí)現(xiàn)button點(diǎn)擊事件",
        Toast.LENGTH_LONG);
    tot.show();  
  }

}

c、運(yùn)行效果

3、實(shí)現(xiàn)OnClickListener接口:

與獨(dú)立類(lèi)實(shí)現(xiàn)的原理是一樣的,優(yōu)點(diǎn)和缺陷也是大徑相同的,實(shí)現(xiàn)OnClickListener接口的時(shí)候?qū)崿F(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="方法三:實(shí)現(xiàn)接口" />

b、回到MainActivity中實(shí)現(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);
    
    /*
     * 方法三:實(shí)現(xiàn)OnClickListener接口
     */
    btn3 = (Button) findViewById(R.id.button3);
    btn3.setOnClickListener(this);
    
  }

  //實(shí)現(xiàn)OnClickListener接口中的方法
  @Override
  public void onClick(View v) {
    Toast tot = Toast.makeText(
        MainActivity.this,
        "接口OnClickListener實(shí)現(xiàn)button點(diǎn)擊事件",
        Toast.LENGTH_LONG);
    tot.show();
    
  }
}

c、運(yùn)行效果

4、添加X(jué)ML屬性:

我們可以給XML添加一個(gè)onClick屬性來(lái)實(shí)現(xiàn)點(diǎn)擊事件的監(jiān)控

這樣的好處是:更加便捷,代碼量能夠減少

但是不足的地方是:每一次維護(hù)的時(shí)候都要去XML里面改源碼,是不是很不好維護(hù)很麻煩呢?

a、添加一個(gè)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中實(shí)現(xiàn)onClick按鈕

/*
   * 方法四:添加X(jué)ML屬性
   */
  public void btn4Click(View v){
    Toast tot = Toast.makeText(
        MainActivity.this,
        "添加X(jué)ML標(biāo)簽實(shí)現(xiàn)button點(diǎn)擊事件",
        Toast.LENGTH_LONG);
    tot.show();
  }

c、運(yùn)行結(jié)果:

三、總結(jié):

1、在實(shí)現(xiàn)監(jiān)聽(tīng)的時(shí)候都是需要兩步走:

1)綁定button按鈕

2)監(jiān)聽(tīng)button事件

1、具體使用什么方法去實(shí)現(xiàn)button按鈕點(diǎn)擊事件的監(jiān)聽(tīng)要看具體的需求,都各有各的好處和不足。如果只使用一次則推薦使用內(nèi)部類(lèi)的方法;如果多次使用則使用外部類(lèi)的方法;實(shí)現(xiàn)接口的方法可以在原本的類(lèi)中實(shí)現(xiàn);但是在XML里面添加屬性的方法時(shí)不推薦的,畢竟很不好去維護(hù)。

2、內(nèi)部類(lèi)的使用在Android開(kāi)發(fā)中是經(jīng)常用到的,所以非常的重要。java中關(guān)于內(nèi)部類(lèi)的使用詳解:http://www.dbjr.com.cn/article/36125.htm

3、Android開(kāi)發(fā)中有很多按鈕,但是監(jiān)聽(tīng)的方法常用的都是這幾種,所以能夠舉一反三,這也是為什么寫(xiě)這個(gè)的原因

4、Toast是Android中一個(gè)實(shí)現(xiàn)的效果,是不是經(jīng)常看到這個(gè)效果呢?在寫(xiě)監(jiān)聽(tīng)的時(shí)候順便也把Toast一起學(xué)了,一舉兩得哈哈哈!!

PS:看似零零散散的知識(shí)點(diǎn),但所有的知識(shí)點(diǎn)都是一條連線的,任何行業(yè)的知識(shí)點(diǎn)都是如此,就好比先有了數(shù)字才出現(xiàn)算數(shù),先出現(xiàn)了英文字母才有了單詞一樣。。。

以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。

相關(guān)文章

最新評(píng)論