一、准备工作
1、工作目录
首先创建空项目
2、布局文件(activity_main.xml)
<?xml version="1.0" encoding="utf-8"?>
<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"
tools:context=".MainActivity"
android:orientation="vertical">
<Button
android:id="@+id/btn_click"
android:text="点击我"
android:layout_width="match_parent"
android:layout_height="wrap_content" />
</LinearLayout>
二、三种实现方式
1、在与事件绑定时定义事件监听器
该方法是当通过调用组件的setXXXListener()方法设置监听器时,定义只能当前的组件使用的事件监听器,代码如下
package com.example.listener;
import androidx.appcompat.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.Toast;
public class MainActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
Button btnClick = findViewById(R.id.btn_click);
//使用findViewById方法对控件进行获取
//R.id.btn_click对应布局中添加的id属性
btnClick.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
//里面写点击后想要实现的效果
Toast.makeText(MainActivity.this,
"按钮被点击", Toast.LENGTH_SHORT).show();
//这里是弹出一个消息---"按钮被点击"
}
});
}
}
}
2、当前Activity类实现监听器接口
该方法使当前Activity类实现相应的监听器接口,完成监听器中的抽象方法,组件绑定监听器时,监听器对象为Activity对象(常用)。代码如下
package com.example.listener;
import androidx.appcompat.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.Toast;
public class MainActivity extends AppCompatActivity implements View.OnClickListener {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
Button btnClick = findViewById(R.id.btn_click);//控件的获取
btnClick.setOnClickListener(MainActivity.this);
//需要传入接口实现类的实例。
//此时接口实现类的实例为MainActivity
}
@Override
public void onClick(View view) {
switch (view.getId()){
case R.id.btn_click:
//里面写点击后想要实现的效果
Toast.makeText(MainActivity.this,
"按钮被点击", Toast.LENGTH_SHORT).show();
//这里是弹出一个消息---"按钮被点击"
}
}
}
3、XML布局文件中设置回调方法
该方法是在XML布局文件中设置回调方法,在Java代码中实现该方法即可。但此方法不是一个通用的方法,但对按钮等常用组件的点击事件处理确实很方便。具体步骤如下:
1、activity_main.xml
布局文件中添加onclick
属性,设定回调方法
<?xml version="1.0" encoding="utf-8"?>
<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"
tools:context=".MainActivity"
android:orientation="vertical">
<Button
android:id="@+id/btn_click"
android:text="点击我"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:onClick="Click"/>
</LinearLayout>
2、在MainActivity
中添加Click
方法即可
package com.example.listener;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.Toast;
import androidx.appcompat.app.AppCompatActivity;
public class MainActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
Button btnClick = findViewById(R.id.btn_click);//控件的获取
}
public void Click(View view){
switch (view.getId()){
case R.id.btn_click://此处是对布局中设置的id直接进行判断,
// 不需要对控件进行获取(findviewByID)
Toast.makeText(this, "按钮被点击", Toast.LENGTH_SHORT).show();
break;
}
}
}
参考文章:
https://www.cnblogs.com/xqz0618/p/click3.html