Android如何处理子视图中接触点的转换?
旋转子视图时,Android如何处理从父视图到子视图的触点映射 接触点是否在某个时刻进行了转换?如果是,在哪里 我知道视图组有如下方法:Android如何处理子视图中接触点的转换?,android,android-layout,android-custom-view,touch-event,Android,Android Layout,Android Custom View,Touch Event,旋转子视图时,Android如何处理从父视图到子视图的触点映射 接触点是否在某个时刻进行了转换?如果是,在哪里 我知道视图组有如下方法: dispatchTouchEvent() onInterceptTouchEvent() onTouchEvent() 等等 是否有人负责在父视图中获取接触点并将其转换为子视图的局部坐标空间 我试图浏览源代码,但无法真正理解所有的交互。所有这些内容都是在dispatchTouchEvent方法中执行的 ViewGroup遍历它的子对象 为每个子项创建传递给di
dispatchTouchEvent()
onInterceptTouchEvent()
onTouchEvent()
等等
是否有人负责在父视图中获取接触点并将其转换为子视图的局部坐标空间
我试图浏览源代码,但无法真正理解所有的交互。所有这些内容都是在
dispatchTouchEvent
方法中执行的
ViewGroup
遍历它的子对象dispatchTouchEvent
MotionEvent
的新副本(更准确地说是从池中获取)。请参阅MotionEvent.get(MotionEvent)
MotionEvent
的位置(请参见getTop
和getLeft
方法)MotionEvent#transform
方法应用变换(从子对象获取逆变换矩阵)MotionEvent
发送给子对象(如果该子对象也是ViewGroup
请参见第1部分)MotionEvent
(请参阅MotionEvent#recycle
)是的,正如前面提到的Delyan一样,转换只适用于蜂巢和Android的更新版本。在旧版本上,只执行偏移。应该注意,这只发生在蜂巢和更高版本上,因为它需要逐视图变换。看起来NineodelDroids增加了对旋转的支持-知道怎么做吗?看起来ViewGroup类真的必须为此而被替换。