Adroid点击事件的四种实现方式
前言
在安卓开发中,点击事件的监听属于程序员的基操,我们很有必要掌握以下这四种方法。
第一种【定义onClick属性】
基本步骤
- 在Button中定义onClick属性,例如: android:onClick=“click”。
- 定义click方法。
- 编写点击事件
注意:
- 访问控制修饰符必须为public。
- 返回值类型必须为void。
- 方法名必须与onClick属性值一致。
- 形参列表有且仅有一个View。
代码实现
xml文件
<Button
android:layout_width="80dp"
android:layout_height="80dp"
android:text="按钮"
android:onClick="click"/>
Java代码
public void click(View v){
//在此处编写点击事件
Log.d("MainActivity.this","定义onClick属性方式监听事件");
}
运行效果图
第二种【匿名内部类监听点击事件】
基本步骤
- 为按钮添加id属性,例如:android:id="@+id/button";
- 通过findViewById方法找到控件对象;
- 编写匿名内部类(new OnClickListener() {});
- 绑定监听器。
代码实现
xml代码
<Button
android:layout_width="80dp"
android:layout_height="80dp"
android:id="@+id/button"
android:text="按钮"/>
Java代码
Button btn = (Button) findViewById(R.id.bntton);
btn.setOnClickListener(new OnClickListener() {
@Overrid
public void onClick(View v){
//在此处编写点击事件
Toast.makeText(MainActivity.this," 第二种实现方法【匿名内部类监听事件】",Toast.LENGTH_SHORT).show();
}
});
运行效果图
第三种【自定义类实现OnClickListener接口】
基本步骤
- 为按钮添加id属性,例如:android:id="@+id/button";
- 通过findViewById方法找到控件对象;
- 自定义一个类实现View.OnClickListener接口,重写onClick方法;
- 绑定监听器。
代码实现
xml代码
<Button
android:layout_width="80dp"
android:layout_height="80dp"
android:id="@+id/button"
android:text="按钮"/>
Java代码
Button btn = findViewById(R.id.button);
btn.setOnClickListener(new MyListener());
class MyListener implements View.OnClickListener{
@Override
public void onClick(View v) {
Log.d("MainActivity.this","自定义类实现OnClickListener接口");
}
运行效果图
第四种【Activity实现View.OnClickListener接口】
基本步骤
- 让Activity实现View.OnClickListener接口并重写onClick方法;
- 为按钮添加id属性;
- 通过findViewById找到控件对象;
- 为控件设置监听器。
代码实现
xml代码
<Button
android:layout_width="80dp"
android:layout_height="80dp"
android:id="@+id/button"
android:text="按钮"/>
Java代码
public class MainActivity extends AppCompatActivity implements View.OnClickListener {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
//初始化控件
Button button = findViewById(R.id.button);
//设置监听器
button.setOnClickListener(this);
}
@Override
public void onClick(View v) {
Log.d("MainActivity.this","Activity实现OnClickListener接口");
}
}
运行效果图