我注意到在 Android API Level 11 (ICS)MotionEvent
中有一个transform
方法需要一个Matrix
. 这实际上会使我正在做的事情变得更干净,但我正在为 Level 8 编写代码。
MotionEvent.transform()
在早期版本的 Android 上是否有一个方便的替代方案?我希望历史坐标和多点触控坐标都被转换,并且我希望它能够正确处理相对坐标与绝对坐标之间的区别,这是事情变得有点棘手的地方。
我真正想知道的是我是否可以创建MotionEvent
一个转换后的另一个副本MotionEvent
。我实际上不需要任意转换,但我需要能够翻译和缩放。我相信我可以用 翻译offsetLocation
,但我看不到任何缩放 a 的方法MotionEvent
(在 11 级之前)。特别是,如何转换多点触控事件的坐标?这些obtain
方法只需要一个 (x,y) 对,而不是一个数组。
我想这样做的原因是我有一个将事件分派给一组“子”对象的对象。现在,这些孩子中的每一个都以一种特别的方式转换坐标。然而,父母(调度员)知道需要执行什么转换,因此在将其MotionEvent
分派给孩子之前只转换(或副本)会更干净。或者,我可以创建自己的类来包装MotionEvent
或复制和转换数据出 a MotionEvent
,但如果我可以使用 a 会简单得多MotionEvent
。