1. 程式人生 > >Android三種方法實現按鈕點選事件

Android三種方法實現按鈕點選事件

0.我們都知道Java在開發介面的時候,需要使用監聽事件,只有在寫過監聽事件之後才能夠完整的使用軟體,比如說,我們在寫了一個button之後,想點選button,然後在文字標籤中變換字型該怎麼做呢?那麼我們就需要對button這個view進行新增監聽事件,新增完監聽事件之後,就可以對其進行修改了。具體如下:

1.layout.xml佈局檔案

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical">

    <TextView
        android:id="@+id/start"
        android:layout_width="match_parent"
        android:layout_height="100dp"
        android:textSize="30sp"
        />

    <Button
        android:layout_width="match_parent"
        android:layout_height="100dp"
        android:id="@+id/button_01"
        android:text="button_01"
        android:textSize="30sp"
        android:layout_marginTop="100dp"
        />
    <Button
        android:layout_width="match_parent"
        android:layout_height="90dp"
        android:id="@+id/button_02"
        android:text="button_02"
        android:textSize="30sp"
        android:layout_marginTop="200dp"
        />
    <Button
        android:layout_width="match_parent"
        android:layout_height="100dp"
        android:id="@+id/button_03"
        android:text="button_03"
        android:textSize="30sp"
        android:layout_marginTop="300dp"
        />
</RelativeLayout>

這裡面分別添加了三個Button,依次id為button_01,button_02,button_03。佈局效果如下:

寫上id是為了方便在Java程式碼中找到這個物件,然後對其進行編輯。

我們發現這裡的xml檔案和css程式碼類似,就是對其整個手機的APP佈局進行設計。關鍵的問題是需要注意一些xml檔案的格式問題,比如說,xml中只有一個根目錄,其它標籤都必須在這個根目錄下面。這裡我們使用的就是RelativeLayout根標籤,這裡的RelativeLayout就是相對佈局的意思,在裡面我們就可以使用margin,padding等來設定擺放位置,這就和css佈局很類似。其實一些屬性值也很類似。這裡就不再多做介紹了。

2.弄完這個佈局檔案之後,我們就需要對這個按鈕進行程式碼的測試了。

3. 就像最開始說的那個樣子,我門雖然有了一個按鈕,但是如果不對這個按鈕進行監聽操作,即使點選了這個按鈕,依然無法產生效果,於是新增監聽事件。

4.新增監聽事件是一個稍微麻煩的事情,但是我們需要畏難而上,我們需要實現

View控制元件有一個setOnClickListener()方法,於是我們可以使用button1.setOnClickListener()方法,但是這個setOnClickListener()方法需要一個引數,該方法如下:

 public void setOnClickListener(View.OnClickListener l) {
        throw new RuntimeException("Stub!");
    }

於是我們需要在該方法中新建一個View.OnClickListener物件,只有這樣,才能繼續呼叫該方法。但是我們知道View.OnClickListener是一個介面

 public interface OnClickListener {
        void onClick(View var1);
    }

所以我們需要使用一個類實現這個介面,然後再新建這個類對下 作為引數即可。於是便有了以下三種方法:

//1.使用匿名內部類
        button1.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                myTextView.setText("你點選了Button_01");
            }
        });

        //2.外部類實現這個介面
        button2.setOnClickListener(new OutButtonListener(myTextView));

        //3.使用內部類實現按鈕點選功能
        class ButtonListener implements  View.OnClickListener{
            @Override
            public void onClick(View view) {
                myTextView.setText("你點選了Button_03!");
            }
        }
        button3.setOnClickListener(new ButtonListener());

注:

1.在使用外部類實現該介面的時候,我們需要新建一個類,名為OutButtonListener,同時,我們要注意要將該類建在和當前的這個類在同一目錄下,如下所示:

外部類OutButtonListener程式碼如下:

package com.example.myapplication;

import android.util.Log;
import android.view.View;
import android.widget.Button;
import android.widget.TextView;
import android.widget.Toast;

/**
 * Created by 時知夜霖 on 2017/3/12.
 */

//繼承自View.OnClickListener
public class OutButtonListener implements View.OnClickListener {
    private TextView mTextView;

    public OutButtonListener(TextView mTextView) {
        this.mTextView = mTextView;
    }

    public void onClick(View v){//使用View 作為引數
        //按下按鈕之後的事情
        this.mTextView.setText("你點選了Button_02");

        //((Button)v).setText("你點選了Button_02");
    }
}

2.執行結果如圖所示: