Android教程網
  1. 首頁
  2. Android 技術
  3. Android 手機
  4. Android 系統教程
  5. Android 游戲
 Android教程網 >> Android技術 >> Android開發 >> 關於android開發 >> 【lushengduan】03、點擊事件的四種實現方式,lushengduan03

【lushengduan】03、點擊事件的四種實現方式,lushengduan03

編輯:關於android開發

【lushengduan】03、點擊事件的四種實現方式,lushengduan03


    好吧,首先我們來解釋一下什麼“點擊事件”,所謂“點擊事件”就是當我們點擊(注意是單擊)手機屏幕時,系統做出相應的響應;舉個例子哈,你去朋友家裡,要告訴你的朋友你到了,你是不是要敲一敲門,然後你朋友聽到了就來給你開門了,這個就和我們點擊屏幕上的Button很類似,點擊的操作相當於敲門,至於“朋友聽到”和“開門”這兩個行為動作,就是我們今天要探討的內容了。

    手機沒有耳朵,不可能“聽到”我們點擊了屏幕,因此,需要給Button綁定一個監聽器,每當Button被點擊了,就去執行某些特定的操作,常用的點擊事件的實現方式有四種。

 

一、布局中綁定onClick屬性

    上一篇文章大家也接觸到了,在Button這個控件裡面,設置“android:onClick”屬性

    <Button
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:onClick="showToast"
        android:text="CLICK ME!"/>

    “onClick”的值將對應載入這個布局的Activity中方法,也就是說如果“android:onClick=“xxx””的話,那麼,在HelloWorldActivity裡的方法就應該為

    public void xxx(View view){
        //Do what you want to do here.
    }

    當我們點擊Button的時候,就會去執行xxx方法裡的代碼

 

二、實現OnClickListener接口

    OnClickListener是一個接口,通過implements來onClick這個接口,在onClick這方法裡面就可以實現自己的操作了

package com.example.lushengduan.helloworld;

import android.app.Activity;
import android.os.Bundle;
import android.view.View;
import android.view.View.OnClickListener;

/**
 * Created by Lushengduan on 2016/3/4.
 */
public class HelloWorldActivity extends Activity implements OnClickListener {
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main_layout);
    }

    @Override
    public void onClick(View v) {
        //Do what you want to do here.
    }
}

    看到這裡大家會不會有個問題,這個監聽器沒有明確指定監聽哪一個組件,那它是怎麼工作的呢?是這樣的,我們能通過v.getId()來標識不同的組件,現在為Button增加一個名為“button1”的id

    <Button
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:onClick="showToast"
        android:id="@+id/button1"
        android:text="CLICK ME!"/>

   那麼結合View類裡的getid就可以定位到我們點擊的Button這個控件,而不是其他地方了,代碼如下

    @Override
    public void onClick(View v) {
        switch (v.getId()){
            case R.id.button1:
                //To do someThing
                break;
            default:
                break;
        }
    }

   

三、內部類方式

    Button類裡有個方法叫做“setOnClickListener”,這個方法的參數需要的是一個OnClickListener的對象,新建一個內部類實現OnClickListener的接口就行了,在這之前,我們需要通過findViewById的方式拿到Button對象

button = (Button) findViewById(R.id.button1);

   為Button設置監聽器

button.setOnClickListener(new MyClickListener());

    然後在onClick方法中執行你想要的操作,完整代碼如下

package com.example.lushengduan.helloworld;

import android.app.Activity;
import android.os.Bundle;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;

/**
 * Created by Lushengduan on 2016/3/4.
 */
public class HelloWorldActivity extends Activity {

    private Button button;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main_layout);
        button = (Button) findViewById(R.id.button1);
        button.setOnClickListener(new MyClickListener());
    }

    private class MyClickListener implements OnClickListener{

        @Override
        public void onClick(View v) {
            //Do what you what to do here.
        }
    }
}

 

四、匿名內部類方式

    能寫成內部類的,就可以寫成匿名內部類的方式,理解了上面的代碼後,那麼就很簡單,基本是java的基礎知識了,直接看代碼

package com.example.lushengduan.helloworld;

import android.app.Activity;
import android.os.Bundle;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;

/**
 * Created by Lushengduan on 2016/3/4.
 */
public class HelloWorldActivity extends Activity {

    private Button button;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main_layout);
        button = (Button) findViewById(R.id.button1);
        button.setOnClickListener(new OnClickListener() {
            @Override
            public void onClick(View v) {
                //Do what you want to do here.
            }
        });
    }
}

 

  1. 上一頁:
  2. 下一頁:
熱門文章
閱讀排行版
Copyright © Android教程網 All Rights Reserved