View的绘制、事件传递过程
2016-09-18 13:40
218 查看
View绘制过程
onMeasure()onLayout()
onDraw()
过程详解
onMeasure()计算尺寸
onLayout()
为viewGroup类型布局子视图用的。
onDraw()
执行绘制图形动作。
View事件传递
Touch事件封装在MotionEvent对象中,其中包括touch的位置、时间、历史记录以及第几个手指触摸(多点触摸)等。Touch事件分为:
ACTION_DOWN,
ACTION_UP,
ACTION_MOVE,
ACTION_POINTER_DOWN,
ACTION_POINTER_UP,
ACTION_CANCEL。
(每个触摸事件都是以ACTION_DOWN开始,ACTION_UP结束)
事件处理包括:
传递,dispatchTouchEvent()函数;
拦截,onInterceptTouchEvent()函数;
消费onTouchEvent()函数和onTouchListener。
传递过程:
事件从Activity.dispatchTouchEvent()开始传递,从最上层的View(ViewGroup)开始一直往下传递。
如果事件从上往下传递过程中被onInterceptTouchEvent做了拦截,那么将不会再次往下传递。
如果在向下传递的过程中,一直没有被停止,最底层View也没有消费事件,事件会往上传传递,此时父View可以消费该Touch事件,如果一直没有被消费,会传递到Activity的onTouchEvent。
如果View没有对ACTION_DOWN进行消费,之后的其他事件也不会传递过来。
onTouchListener优先于onTouchEvent()对事件进行消费。
相关文章推荐
- android View 绘制流程 和 事件传递
- Android进阶二十二 View事件的传递过程
- View绘制流程(2)----绘制过程及事件冲突
- 事件从Activity到布局view再到最终组件的传递过程
- 基础篇-View事件传递与绘制机制,自定义View实现理解
- ViewRootImpl 传递整个绘制过程
- Android touch事件传递及View的绘制流程
- android View 的ontouch事件传递过程
- View事件传递与绘制机制,自定义View实现理解
- 深入解析view和viewgroup绘制过程
- 【转】输入事件的传递过程
- Android Activity 和 ViewGroup中事件触发和传递机制
- Android ViewGroup中事件触发和传递机制
- 主线程负责交互(事件处理)和UI绘制(onDraw), 只能在主线程访问View, 其他线程不能直接访问View (Android)
- Android中ViewGroup到View的Touch事件的传递机制
- android绘制view的过程(自定义view一)
- ViewGroup学习之绘制过程
- 在Layout响应点击事件但不传递给内部的childView
- 深入解析view和viewgroup绘制过程
- 对View组件布局和绘制过程, 以及Drawable绘制的理解