即使我是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