安卓四種點選事件型別總結
阿新 • • 發佈:2019-01-23
前言:
關於安卓四種點選事件可分為匿名內部監聽事件、自定義單擊事件監聽、實現OnClickListener介面,重寫onClick(View v)方法、在XML檔案中“顯示指定按鈕的onClick屬性,這樣點選按鈕時會利用反射的方式呼叫對應Activity中的click()方法。”安卓四大點選事件簡介:
首先定義XML檔案如下:文字內容定義在values中strings中。 然後定義按鈕和點選事件,並列印日誌資訊輸出,便於觀察正錯。<?xml version="1.0" encoding="utf-8"?> <resources> <string name="app_name">listener</string> <string name="hello_world">Hello world!</string> <string name="action_settings">Settings</string> <string name="button1">匿名內部監聽事件</string> <string name="button2">獨立類監聽事件</string> <string name="button3">介面實現監聽事件</string> <string name="button4">按鈕實現監聽事件</string> </resources>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical" > <Button android:id="@+id/button1" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="@string/button1" /> <Button android:id="@+id/button2" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="@string/button2" /> <Button android:id="@+id/button3" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="@string/button3" /> <Button android:id="@+id/button4" android:layout_width="wrap_content" android:layout_height="wrap_content" android:onClick="click" android:text="@string/button4" /> </LinearLayout>
以上是四種點選事件的自我總結,各有各的優點和缺點,視情況而定。package com.example.listener; import android.app.Activity; import android.os.Bundle; import android.util.Log; import android.view.Menu; import android.view.MenuItem; import android.view.View; import android.view.View.OnClickListener; import android.widget.Button; public class MainActivity extends Activity implements OnClickListener{ private Button button1; private Button button2; private Button button3; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); //匿名內部類監聽事件 button1=(Button) findViewById(R.id.button1); button1.setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { Log.i("tag","匿名內部類監聽事件"); } }); //自定義單擊事件監聽 button2=(Button) findViewById(R.id.button2); button2.setOnClickListener(new myOnClicklistener(){ public void onClick(View v) { super.onClick(v); Log.i("tag","我是按鈕的一個事件"); } }); button3=(Button) findViewById(R.id.button3); button3.setOnClickListener(this); } class myOnClicklistener implements OnClickListener{ @Override public void onClick(View v) { Log.i("tag","都可以執行我,我是公用的"); } } //實現OnClickListener介面,重寫onClick(View v)方法 @Override public void onClick(View v) { Log.i("tag", "我是介面實現事件"); } //在activity_main.xml中定義onClick屬性,重寫onClick(View v)方法、 //這樣點選按鈕時會利用反射的方式呼叫對應Activity中的click()方法。” public void click(View v){ Log.i("tag", "我是按鈕實現事件"); } }