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.執行結果如圖所示: