即使我是Android的新手,也比以往任何时候都感觉更愚蠢。
我有扩展SurfaceView的视图,并且在那里覆盖了onTouchEvent并将此测试代码放入其中:

if (event.getAction() == MotionEvent.ACTION_MOVE)
  {
   return true;
  }
  return false;


然后,当我在调试模式下(使用Eclipse)在仿真器中运行应用程序时,无法使它返回true。我单击,保持单击并拖动,然后释放,但是无论如何它始终是event.getAction == 0。

我想念什么?

最佳答案

getAction()返回实际操作标志和生成该事件的指针索引的组合(用于多点触控)。

要只包含操作部分,可以使用MotionEvent.ACTION_MASK进行“与”运算:

if (event.getAction() & MotionEvent.ACTION_MASK ==
                               MotionEvent.ACTION_MOVE) { ...


或者,如果您使用的API> = 8,则可以直接使用getActionMasked()。如果必须在switch中进行测试,这将很有用。

similar question here

10-08 17:58