美文网首页
安卓控件触摸滑动事件冲突简介

安卓控件触摸滑动事件冲突简介

作者: 游民恋星 | 来源:发表于2016-05-23 18:01 被阅读119次

    这是一个外层的控件,它是一个viewPager,在它的里面有个listView,listView每一个item被点击会弹出内容,这里要讲解的是ViewPager子View滑动事件冲突的解决,安卓系统提供给我们关于触摸传递事件有三个方法:

    它们分别是:

    1、public boolean dispatchTouchEvent(MotionEvent ev)  这个方法用来分发TouchEvent

    2、public boolean onInterceptTouchEvent(MotionEvent ev) 这个方法用来拦截TouchEvent

    3、public boolean onTouchEvent(MotionEvent ev) 这个方法用来处理TouchEvent

    当条目被点击,首先Activity将TouchEvent事件通过dispatchTouchEvent方法传递给ViewGroup,

    ViewGroup通过dispatchTouchEvent方法传递给interceptTouchEvent,这个时候,如果返回true ,则交给这个ViewGroup的onTouchEvent处理;如果返回false,则交给子View的dispatchTouchEvent方法处理。

    当事件传递到子view 的dispatchTouchEvent方法中时,通过方法传递到当前View的onTouchEvent方法中,这个时候如果返回true,那么这个事件就会止于该view;如果返回 false ,那么这个事件会从这个子view 往上传递,而且都是传递到父View的onTouchEvent 来接收。

    当传递到ViewGroup的 onTouchEvent 最后也返回 false 的话,它将继续传递到Activity的onTouchEvent中,还是返回false的话,这个事件就会“消失“;事件向上传到中间的任何onTouchEvent方法中,如果返回true,则代表事件被消费,就不会再传递。

    下附图给予参考,触摸传递:

    子ViewPager 父ViewPager

    相关文章

      网友评论

          本文标题:安卓控件触摸滑动事件冲突简介

          本文链接:https://www.haomeiwen.com/subject/rewarttx.html