Button和imageButton
1、共同点
都可以作为一个按钮产生点击事件
2、不同点
Button有text属性
imagebutton有src属性
3、产生明显的点击效果
监听事件
- 所有的控件都有一个onclick的事件通过自身的.setOnClickListener(OnClickListener)方法添加点击事件
OnClick事件实现思路:
- 初始化需要监听的控件
- findViewById找到对应的控件,(findViewById 返回的是一个View对象,需要强制性转换为对应控件)
- 设置控件的监听器,通过监听器实现我们点击Button要操作的事情。(setOnclickListener)
监听事件实现方法的几种写法
- 匿名内部类的实现
- 独立类的实现
- 实现接口的方式来实现
以button控件为例
package com.example.prace3;
import android.app.Activity;
import android.os.Bundle;
import android.util.Log;
import android.view.View;
import android.widget.Button;
import android.widget.ImageButton;
import android.widget.Toast;
//通过实现接口方式监听
public class MainActivity extends Activity implements View.OnClickListener{
//初始化控件
private Button btn1;
private Button btn2;
private ImageButton ibtn;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
btn1 = findViewById(R.id.btn1);//以匿名内部类实现监听效果
btn2 = findViewById(R.id.btn2);//以外部类方式实现监听效果
ibtn = findViewById(R.id.ibtn);//以接口方式现监听效果
//以匿名内部类实现监听效果
btn1.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Toast.makeText(MainActivity.this,"btn1内部匿名类实现监听效果",1).show();
}
});
btn2.setOnClickListener(listener);
ibtn.setOnClickListener(this);
}
以外部类方式实现监听,共同实现父类方法,并且执行特有方法
View.OnClickListener listener = new btnOnClickListener(){
@Override
public void onClick(View v) {
//调用父类的onclick
super.onClick(v);
Toast.makeText(MainActivity.this,"btn2外部类方式实现监听效果",1).show();
}
};
//接口方法
@Override
public void onClick(View v) {
Toast.makeText(MainActivity.this,"ibtn接口方式现监听效果",1).show();
v.setAlpha(0.3f);//透明度
}
}
//外部类,可以形成单独一个文件和所有点击事件的共同事件
class btnOnClickListener implements View.OnClickListener{
@Override
public void onClick(View v) {
Log.i("tag", "父类的onclick事件: ");
v.setAlpha(0.5f);//透明度
}
}
---------------------
作者:CSDNgaoqingrui
来源:CSDN
原文:https://blog.csdn.net/csdngaoqingrui/article/details/79213570