我创建了一个可以四处拖动的 View 。这是我的来源:
imageView.setOnTouchListener(new View.OnTouchListener() {
private int initialX;
private int initialY;
private float initialTouchX;
private float initialTouchY;
@Override
public boolean onTouch(View v, MotionEvent event) {
switch(event.getAction()) {
case MotionEvent.ACTION_DOWN:
initialX = params.x;
initialY = params.y;
initialTouchX = event.getRawX();
initialTouchY = event.getRawY();
return true;
case MotionEvent.ACTION_UP:
return true;
case MotionEvent.ACTION_MOVE:
params.x = initialX + (int)(event.getRawX()-initialTouchX);
params.y = initialY + (int)(event.getRawY()-initialTouchY);
windowManager.updateViewLayout(imageView, params);
return true;
}
return false;
}
});
如您所见,通过触摸 ImageView 并四处平移, View 本身会移动。现在我的问题是,我想区分移动 View 和实际单击 View 。我在 stackoverflow 上尝试了此处显示的多种方法,但找不到任何解决我问题的方法。
如果 ImageView 被点击,它应该调用一个方法。否则,如果只是触摸移动 View ,则不应调用该方法。
有人有什么建议吗?
提前致谢
最佳答案
当您的 ACTION_UP
事件发生时,您希望返回 false
,否则 OnClickListener
不会被调用,因为您告诉系统你已经处理了那个触摸事件。
您可能还想在您的第一个 ACTION_DOWN
事件中获取并保存 System.currentTimeMillis()
,然后,只有在 ACTION_UP
事件发生在表示点击的阈值时间之前。
关于android - 在触摸时移动 View 并在点击时使用react?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28328390/