美文网首页
事件分发机制总结

事件分发机制总结

作者: 付小影子 | 来源:发表于2018-12-29 17:03 被阅读0次

    事件分发

    所谓事件,就是点击事件,即MitionEvent对象;事件分发,就是对MotionEvent事件的分发过程,及当一个MotionEvent产生了以后,系统需要把这个事件传递给一个具体的View,这个传递的过程就是分发过程
    点击事件的分发过程有三个很重要的方法来共同完成
    dispatchTouchEvent,onInterceptTouchEvent,onTouchEvent

    事件分发 结论

    • 同一个事件序列是指从手指触摸屏幕的那一刻起,到手指离开屏幕的那一刻结束,在这个过程中所产生的一系列事件,这个事件序列以down事件开始,中间含有数量不定的move事件,最终以up结束
    • 正常情况下,一个事件序列只能被一个View拦截且消耗
    • 某个View一旦决定拦截,那么这一个事件序列都只能由它来处理
    • 某个View一旦开始处理事件,如果它不消耗ACTION_DOWN事件(onTouchEvent返回false),那么同一事件序列中的其他事件都不会再交给它来处理,并且将事件重新交给它的父元素去处理,即父元的onTouchEvent会被调用
    • ViewGroup 默认不拦截任何事件,Android源码中ViewGroup的onInterceptTouchEvent方法默认返回false
    • View没有onInterceptTouchEvent,一旦有点击事件传递给它,那么它的onTouchEvent方法就会被调用
    • View的onTouchEvent默认都会消耗事件,返回true,除非他是不可点击的,clickable和longClickable同时返回false,View的longClickable默认为false,clickable分情况,button的默认是true,textview默认是false
    • View 的enable属性不影响onTouchEvent的默认返回值
    • onClick会发生的前提是当前view是可点击的,并且收到了down和up事件
    • 事件传递过程是由外向内的,即事件总是先传递给父元素,再由父元素分发给子View

    相关文章

      网友评论

          本文标题:事件分发机制总结

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