首页 > 移动平台 > 详细

Android处理touch事件

时间:2020-04-27 21:33:10      阅读:56      评论:0      收藏:0      [点我收藏+]

Android事件处理机制是基于Listener实现的,比如触摸屏相关的事件,就是通过onTouchListener实现;
所有View的子类都可以通过setOnTouchListener()、setOnKeyListener()等方法来添加对某一类事件的Listener;
Listener一般以Interface的方式来提供,其中包含一个或多个abstract方法,我们需要实现这些方法来完成onTouch()、onKey()等操作。这样,程序便可以在特定的事件被dispatch到该view的时候,通过callback函数给予适当的响应。

当用户触摸屏幕的时候,会产生许多手势,可以通过下列方式接收事件处理:

1.View类有个View.onTouchListener内部接口,可以通过重写它的onTouch(View v, MotionEvent event)方法,处理一些在该控件中触发的touch事件;
2.也可以通过重写Activity的onTouchEvent方法;
3.通过Android sdk提供的GestureDetector类

onTouch()方法:

当一个View绑定了OnTouchListener后,当有Touch事件触发时,就会调用onTouch方法。当把手放到View上后,onTouch方法被一遍一遍的调用

onTouchEvent()方法:

重写了Activity的onTouchEvent方法后,当屏幕有Touch事件时,此方法就会被调用。当把手放到Activity上时,onTouchEvent方法会一遍一遍的被调用

GestureDetector:

在onTouch()/onTouchEvent()方法中,我们调用GestureDetector的onTouchEvent()方法,将捕捉到的MotionEvent交给GestureDetector * 来分析是否有合适的callback函数来处理用户的手势

Touch事件的传递:

在一个Activity里面放一个控件的实例c,并且这个c的属性设定为march_parent

当把手放到屏幕上时,首先控件c响应Touch事件,执行onTouch方法。
如果onTouch返回值为true,表示这个Touch事件被onTouch方法处理完毕,不会把Touch事件再传递给Activity
也就是说onTouchEvent方法不会被调用,当把手放到屏幕上后,onTouch方法会被一遍一遍的调用
?
如果onTouch返回值为false,表示这个Touch事件没有被c完全处理,onTouch返回以后,Touch事件被传递给Activity,
onTouchEvent方法调用,当把手放到屏幕上后,onTouch方法调用一次后,onTouchEvent方法被一遍一遍的调用

参考:
https://blog.csdn.net/lc_miao/article/details/78274840
https://blog.csdn.net/carson_ho/article/details/54136311

Android处理touch事件

原文:https://www.cnblogs.com/vivian187/p/12789831.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!