下边要介绍的控件,带有各种各有的监听器,用于捕捉用户动作并作出相应的响应,下边的以Button为例,总结四种监听实现方法,并进行介绍。
6、Button 按钮
按钮是与用户交互最常用的控件之一。
![](https://img.haomeiwen.com/i14390444/45579f874c0c0f76.jpg)
四个按钮分别使用四种不同的点击方法。
方法一:使用内部类
- 新建一个MyOnClickListener类并实现View.OnClickListener接口
- 重写View.OnClickListener接口中的OnClick(View view)方法
- 给Button绑定一个监听器,并监听一个点击事件
方法二:使用匿名内部类
- 给Button绑定一个监听器,并监听一个点击事件
- 在setOnClickListener方法中直接传入一个OnClickListener对象,并实现OnClick方法
方法三:让MainActivity直接实现View.OnClickListener接口
- 让MainActivity直接实现View.OnClickListener
- 在MainActivity类中重写onClick方法
- 给Button绑定一个监听器,并监听一个点击事件。(注:此时setOnClickListener传入的是this)
方法四:通过布局文件中控件的属性
- 在activity_main.xml中给Button控件添加Android:onClick=”action”属性
- 在Activity中实现action方法,action方法必须满足如下三个条件:
(1) 方法的访问修饰符必须是public
(2)方法的名称必须跟android:onClick=”action” 中的名称完全一致
(3)形参必须是View类型
具体代码实现:
public class MainActivity3 extends Activity implements View.OnClickListener{
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main5);
Button btn_1 = findViewById(R.id.btn_1);
Button btn_2 = findViewById(R.id.btn_2);
Button btn_3 = findViewById(R.id.btn_3);
//使用匿名内部类(实现OnClickListener)给button绑定一个监听器,监听点击事件
btn_1.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Toast.makeText(getApplicationContext(), "按钮1", Toast.LENGTH_SHORT).show();
}
});
//使用内部类(实现OnClickListener)给button绑定一个监听器,监听点击事件
btn_2.setOnClickListener(new MyOnClickListener());
//使用MainActivity实现OnClickListener接口给button绑定一个监听器,监听点击事件
//注:此时setOnClickListener传入的是this
btn_3.setOnClickListener(this);
}
/*注意:这里的OnClickListener是android.view.View包下的,
不是android.content.DialogInterface包下的。*/
class MyOnClickListener implements View.OnClickListener {
@Override
public void onClick(View v) {
Toast.makeText(getApplicationContext(), "按钮2", Toast.LENGTH_SHORT).show();
}
}
//实现OnClickListener接口中的onClick方法
@Override
public void onClick(View v) {
switch(v.getId()){
case R.id.btn_3:
Toast.makeText(getApplicationContext(), "按钮3", Toast.LENGTH_SHORT).show();
break;
}
}
/**利用反射给button绑定一个监听器,监听点击事件
* 1:方法的访问修饰符必须是public
* 2:方法的名称必须跟android:onClick="clickBut4" 中的名称完全一致
* 3:形参必须是View类型
* 注:形参View其实就是Button对象本身
* */
public void call(View v){
Toast.makeText(getApplicationContext(), "按钮4", Toast.LENGTH_SHORT).show();
}
}
7、ImageButton 图片按钮
ImageButton指显示图片的按钮,它和Button的区别是:Button可以显示文本信息,有android:text属性,但没有android:src属性。但是ImageButton正好相反,没有android:text属性,但有android:src属性。如果不设置scr属,ImageButton的高度会不确定。当然两者都有android:background属性,Button想显示图片,ImageButton想有高度,也可以通过它实现,但图片变形与否就要看控件大小了。下图展示了两个Button的效果:
![](https://img.haomeiwen.com/i14390444/655fb088f2a8d1bb.jpg)
在drawable文件夹下新建xml文件,shape标签。shape用于定义形状的。
![](https://img.haomeiwen.com/i14390444/8a3969b3b54900f9.jpg)
在drawable文件夹下新建xml文件,selecter标签。selecter设置按钮的点击效果,点击和不点击的两种状态
![](https://img.haomeiwen.com/i14390444/6e72cfb8ad03267f.jpg)
效果图如下:button按钮被点击的效果,ImageButton按钮被点击的效果相同。
![](https://img.haomeiwen.com/i14390444/a0e59f16a92756d7.jpg)
Android自定义控件效果在drawable文件夹中的xml文件,通过background属性达到效果的背景效果。
8、toggleButton 多状态按钮
网友评论