美文网首页
安卓事件传递机制

安卓事件传递机制

作者: watayouxiang | 来源:发表于2017-05-13 22:19 被阅读18次

    事件传递机制

    View

    • dispatchTouchEvent():分发事件
    • onTouchEvent():处理事件

    ViewGroup

    • dispatchTouchEvent():分发事件
    • onInterceptTouchEvent():拦截事件
    • onTouchEvent():处理事件

    事件从树根传递到树叶。比如ViewGroup0里面嵌套了ViewGroup1再嵌套View,当点击View的时候,最先获取到响应是最里层的ViewGroup0。

    • ViewGroup0.onInterceptTouchEvent()是否拦截此事件,返回true拦截,viewGroup0.onTouchEvent()处理事件,返回false交给ViewGroup1.dispatchTouchEcent()处理
    • ViewGroup1.onInterceptTouchEvent()是否拦截此事件,返回true拦截,viewGroup1.onTouchEvent()处理事件,返回false交给View.dispatchTouchEcent()处理
    • View.onTouchEvent()是否处理此事件,true处理此事件,传递结束。false不处理此事件,交给ViewGroup1.onTouchEvent()处理
    • ViewGroup1.onTouchEvent()是否处理此事件,true处理此事件,传递结束。false不处理此事件,交给ViewGroup0.onTouchEvent()处理
    • ViewGroup0.onTouchEvent()是否处理此事件,true处理此事件,传递结束。false不处理此事件,事件丢失

    自定义View

    • 实现一个继承自View的类
    • 添加类的构造方法,把布局初始化
    • 把自定义属性定义在attrs.xml中
    • 重写父类的onMeasure(), onLayout(), onDraw()方法

    View的绘制流程

    View的绘制流程在ViewRoot.java中实现的

    判断是否需要重新计算视图大小(measure)、是否重新需要安置视图的位置(layout)、以及是否需要重绘(draw)

    onMeasure()

    onLayout()

    onDraw()

    如果是viewGroup类型还要: dispatchDraw()

    相关文章

      网友评论

          本文标题:安卓事件传递机制

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