Android(安卓)View的onTouch和onClick和onLongClick事件
16lz
2021-01-26
阅读更多
Android系统有自己的事件处理逻辑,而应用开发大部分是在系统逻辑中添加Application逻辑。本文简要说明onTouch,onClick,onLongClick事件关系。
先看这三个事件的处理函数:
- public boolean onTouch(View v, MotionEvent event);
- public boolean onLongClick(View v);
- public void onClick(View v);
看到三个函数的返回值,只有onClick是void,而onTouch和onLongClick是boolean,原因是系统对这些事件的处理是有条件,必须满足条件才会触发相应的事件处理函数。
如果在onTouch和onLongClick都返回false并且长按View时,可以看到三个事件处理函数都会被调用,而且顺序有一定关系。代码如下:
@Overridepublic boolean onTouch(View v, MotionEvent event) {Toast.makeText(this, "TOUCH", Toast.LENGTH_SHORT).show();return false;}@Overridepublic void onClick(View v) {Toast.makeText(this, "CLICK", Toast.LENGTH_SHORT).show();}@Overridepublic boolean onLongClick(View v) {Toast.makeText(this, "LONG CLICK", Toast.LENGTH_SHORT).show();return false;}
事件在事件链中进行传递,如果一级没有处理,将向下一级传递,直到传遍整个事件链。
onTouch如果返回true,则表明对该事件做了处理,不会继续传递该事件在事件链中;onLongClick如果返回true,则表名对该事件做了处理,不会继续传递该事件在事件链中。
为了避免希望被响应的事件没有得到响应,需要对某些事件处理函数中控制事件是否继续传递。具体做法根据不同要求而有差别,在此不做说明了。
更多相关文章
- Android中Context的传递
- flutter 集成极光推送(有图)
- Android(安卓)VSYNC详解
- Android开源图表库XCL-Charts版本号公布及展示页
- android textview 如何实现像新浪微博@用户的点击事件
- 【边做项目边学Android】手机安全卫士05_2:程序主界面,为每个条目
- android的各种动作事件
- android - JNI接口函数 (3)
- android画出图片阴影!!!!!!!!!!!!!!