我怎么知道MotionEvent是相对的还是绝对的?

Pey*_*loW 35 android touch

我正在实现OnTouchListener并接收MotionEvent对象.一些ACTION_MOVE事件报告绝对X/Y坐标,而一些报告相对坐标.

我怎么能问MotionEvent它目前代表什么样的坐标?

Dim*_*rov 68

您可能希望将这些用于绝对坐标(绝对值,关于设备的屏幕):

MotionEvent.getRawX()

MotionEvent.getRawY()

其他方法,getX()getY()还是要回到你的坐标相对于View分派他们.

  • 我用getRawX()和getRawY()解决了我的问题.然而,我发现它是一个令人沮丧的解决方案,因为它表明getX()和getY()是无用的,即使它们感觉它们应该是MotionEvent类的灵长类动物方法.必须有一个更优雅的解决方案. (7认同)
  • 而(true){System.out.println("thanks"); } (7认同)

Pey*_*loW 36

这是Android平台的限制.

MotionEvent 有时会返回相对于视图的绝对X和Y坐标,有时会返回前一个运动事件的相对坐标.

发送的事件ACTION_DOWN将始终是绝对的,所有其他事件将有所不同.无法询问MotionEvent当前的坐标类型.

这意味着在实践中getX()并且getY()对于许多用例而言是无用的,并且您应该基于应用程序逻辑getRawX()并且getRawY()保证相对于设备屏幕返回绝对坐标.

  • 这仍然是这样吗?我发现getX对于相对坐标工作得很好... (3认同)