我目前正在使用MotionEvent.ACTION_MOVE函数来检测用户是否移动了一个对象(在本例中是一个ImageView)。
问题在于,现在我的算法变得更加复杂,我需要区分用户是否点击此对象或移动它。
我尝试使用MotionEvent.ACTION_DOWN函数但问题是,每次单击该对象时,也会触发MotionEvent.ACTION_MOVE。
怎么能实现这个目标? (非常欢迎代码)
提前致谢。
==编辑==
这是我的代码:
img_view.setOnTouchListener(new View.OnTouchListener()
{
@Override
public boolean onTouch(View v, MotionEvent event)
{
switch(event.getAction())
{
case MotionEvent.ACTION_DOWN :
{
}
break;
case MotionEvent.ACTION_MOVE :
{
}
break;
case MotionEvent.ACTION_UP :
{
}
break;
}
return true;
}
});
答案 0 :(得分:1)
为了检测四处移动,你想检查一个人的手指......是否在移动:)
在ACTION_DOWN中检查位置是否在变化。如果是,在某种程度上,您知道用户正在将手指拖过屏幕。
您可能需要查看this tutorial project,这是一个简单的ImageView示例,其中包含拖动,点击和捏合等多项操作。
答案 1 :(得分:0)
答案:
final GestureDetector gesture_getector = new GestureDetector(HomeActivity.this, new GestureListener());
view_img.setOnTouchListener(new View.OnTouchListener()
{
@Override
public boolean onTouch(final View view, final MotionEvent event)
{
if (gesture_getector.onTouchEvent(event))
{
return true;
}
// End of move object detection
if (event.getAction() == MotionEvent.ACTION_UP)
{
if (cursor_is_scrolling)
{
cursor_is_scrolling = false;
};
}
return false;
}
});
private class GestureListener extends SimpleOnGestureListener
{
@Override
public boolean onDown(MotionEvent e) { return true; }
// Single click detection
@Override
public boolean onSingleTapUp(MotionEvent e)
{
return true;
}
// Move object detection
@Override
public boolean onScroll(MotionEvent e1, MotionEvent e2, float distanceX, float distanceY)
{
cursor_is_scrolling = true;
return true;
}
}