无法使用模拟器制作ACTION_MOVE

时间:2011-01-23 19:55:47

标签: android android-emulator

尽管我是Android的新手,但我感觉比以往任何时候都更加努力。 我的视图扩展了SurfaceView,在那里我重写onTouchEvent并将这个测试代码放在里面:

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

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

我错过了什么?

2 个答案:

答案 0 :(得分:2)

您应该在“OnTouchEvent”方法中返回“true”以避免此问题。

答案 1 :(得分:0)

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

要只使用操作部分,您可以使用MotionEvent.ACTION_MASK执行AND:

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

如果您使用API​​> = 8,则可以直接使用getActionMasked()。如果您必须在switch中进行测试,这非常有用。

<强> similar question here