前言:
关于安卓四种点击事件可分为匿名内部监听事件、自定义单击事件监听、实现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", "我是按钮实现事件");
}
}
以上是四种点击事件的自我总结,各有各的优点和缺点,视情况而定。