Button的点击状态事件有三种:(1)单击事件;(2)长按事件;(3)触摸事件。
以单击事件为例,用户可以通过4种方式为按钮添加单击事件监听器,实现相应的事件响应和处理:
(1)内部类形式:将事件监听器类定义在当前类的内部。
比如,匿名内部类形式:使用匿名内部类创建事件监听器对象。
button1.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
textView1.setText("第一种单击事件监听的方法");
}
});
(2).通过xml定义onClick属性,java代码中编写的方法名就是属性中对应的值,如果没有在java中写方法名,xml会报错。
public void btn2Click(View view){
textView1.setText("第二种监听事件方法");
}
3.需要先定义,后设置。
//设置监听器
//先定义,后使用
View.OnClickListener myListener=new View.OnClickListener() {
@Override
public void onClick(View view) {
textView1.setText("第三种事件监听方法");
}
};
button3.setOnClickListener(myListener);
最后代码:
package com.example.full;
import androidx.appcompat.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.TextView;
public class MainActivity extends AppCompatActivity {
TextView textView1;
Button button1,button2,button3;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
textView1 = findViewById(R.id.textView);
button1 = findViewById(R.id.button1);
button2 = findViewById(R.id.button2);
button3 = findViewById(R.id.button3);
button1.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
textView1.setText("第一种单击事件监听的方法");
}
});
//设置监听器
//先定义,后使用
View.OnClickListener myListener=new View.OnClickListener() {
@Override
public void onClick(View view) {
textView1.setText("第三种事件监听方法");
}
};
button3.setOnClickListener(myListener);
}
//在xml中定义onClick属性。属性中对应的值需要在java代码中编写对应的方法名
public void btn2Click(View view){
textView1.setText("第二种监听事件方法");
}
}
(4)创建一个继承自View.OnClickListener的Activity,由此Activity实现OnClick(View view)方法,在此方法中利用switch-case根据Button控件的id进行单击事件的对象监听识别。这种方法适合按钮数量较多的单击事件处理。Activity本身作为事件监听器类:让Activity本身实现监听器接口,并实现事件处理方法。
类实现接口:
package com.example.full;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.util.Log;
import android.widget.TextView;
import androidx.appcompat.app.AppCompatActivity;
public class ButtonTest extends AppCompatActivity implements View.OnClickListener{
Button button1,button2,button3;
TextView textView1;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
button1 = findViewById(R.id.button1);
button2 = findViewById(R.id.button2);
button3 = findViewById(R.id.button3);
textView1=findViewById(R.id.textView);
button1.setOnClickListener(this);
button2.setOnClickListener(this);
button3.setOnClickListener(this);
}
@Override
public void onClick(View view) {
switch (view.getId())
{
case R.id.button1:
// textView1.setText("按键1被点击");
// Log.i("TAG","你点击了button1按钮");
button1.setText("button1被点击");
break;
case R.id.button2:
// Log.i("TAG","你点击了button2按钮");
button2.setText("button2被点击");
break;
case R.id.button3:
//Log.i("TAG","你点击了button3按钮");
button3.setText("button3被点击");
break;
}
}
}