Android如何处理子视图中触摸点的转换?

Android如何处理子视图中触摸点的转换?,第1张

概述旋转子视图时, Android如何处理从父视图到子视图的触摸点映射? 接触点是否在某个时刻进行了转换?如果是的话,在哪里? 我知道ViewGroups有以下方法: dispatchTouchEvent() onInterceptTouchEvent() 的onTouchEvent() 等等 是其中一个负责在父视图中获取触摸点并将其转换为子视图的本地坐标空间? 我尝试查看源代码,但无法真正理解所有的 旋转子视图时,Android如何处理从父视图到子视图的触摸点映射?

接触点是否在某个时刻进行了转换?如果是的话,在哪里?

我知道VIEwGroups有以下方法:
dispatchtouchEvent()
onIntercepttouchEvent()
的ontouchEvent()
等等

是其中一个负责在父视图中获取触摸点并将其转换为子视图的本地坐标空间?

我尝试查看源代码,但无法真正理解所有的交互.

解决方法 所有这些都是在dispatchtouchEvent方法中执行的.

> VIEwGroup通过它迭代子项
>为每个子项创建传递给dispatchtouchEvent MotionEvent的新副本(从池中获取更精确).请参见MotionEvent.obtain(MotionEvent)
>使用子项的顶部和左侧位置偏移新创建的MotionEvent的位置(请参阅gettop和getleft方法).
>使用MotionEvent#transform方法应用变换(通过从子进行逆变换矩阵)
>最后,它将MotionEvent调度给子节点(如果此子节点也是VIEwGroup,请参阅pt.1)
>它回收以前获得的MotionEvent(参见MotionEvent #cycle)

是的,正如Delyan所提到的 – 转换仅适用于Honeycomb和更新版本的AndroID.在旧版本上,只执行偏移.

总结

以上是内存溢出为你收集整理的Android如何处理子视图中触摸点的转换?全部内容,希望文章能够帮你解决Android如何处理子视图中触摸点的转换?所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/1129923.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-30
下一篇 2022-05-30

发表评论

登录后才能评论

评论列表(0条)

保存