在Android应用开发中,用户和手机交互的方式几乎都是通过触摸手机屏幕的方式进行(也有通过摇晃手机的方式),在代码中都是通过监听来实现用户触发的操作,常用的监听有:OnClickListener(点击监听)、OnTouchListener(触摸监听)、OnLongClickListener(长按监听)等等。此处我们先针对OnClickListener做讲解。
简单的点击事件可分为四类:匿名内部类、自定义监听类、主类实现监听接口、XML绑定监听。
我们编码只能做到给某个控件或者布局注册监听,单单是注册监听无法触发点击效果,要想触发监听事件必须用户手动对此控件做点击操作,初学者容易在此处晕菜。
其实这四类都是通过OnClickListener这个API提供的接口实现的,只不过表现形式不一样而已,下面一一进行讲解。
一、匿名内部类
所谓匿名内部类,字面意思理解就是没有名字的一个内部类,其实就是当我们某个控件想绑定监听的时候,直接实例化一个OnClickListener的接口对象即可。
/**
* ①匿名内部类监听
*/
btn01.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
text.setText("您通过(①匿名内部类监听)触发了我");
}
});
二、自定义监听类
自定义监听类其实就是把匿名内部类取个名字使用而已,两者都是通过实例化OnClickListener接口对象达到监听的效果。
/**
* ②自定义监听类
*/
btn02.setOnClickListener(onClickListener);
private View.OnClickListener onClickListener = new View.OnClickListener() {
@Override
public void onClick(View view) {
text.setText("您通过(②自定义监听类)触发了我");
}
};
三、主类实现监听接口
/**
* ③主类实现监听接口
*/
btn03.setOnClickListener(this);
@Override
public void onClick(View view) {
text.setText("您通过(③主类实现监听接口)触发了我");
}
四、XML绑定监听
通过XML在布局中添加onClick属性指向代码中的方法名也可给空控件设置监听,此方法简单快捷,不需要在类中findViewById,唯一需要注意的是在Activity中写监听方法时要添加形参View,示例如下。
/**
* ④XML绑定监听
*/
public void xmlOnclick(View v) {
text.setText("您通过(④XML绑定监听)触发了我");
}
最后贴上布局文件的代码:
项目源码:https://github.com/Knight2016/DemoForOnClick