Итак, я думаю, что у меня очень простая проблема, но я не могу понять это.Android OnTouch MotionEvent Actions
У меня есть ImageView
, и я использую его метод setOnTouchListener
(OnTouch
).
Как я могу провести различие между событием ACTION_DOWN
и событием ACTION_MOVE
?
Даже когда я просто нажимаю (касание) на ImageView
, ACTION_MOVE
событие вызывается.
Моя цель - открыть что-нибудь (сделать что-нибудь), когда пользователь нажимает на нее и перемещает ее, когда пользователь удерживает ее и перемещает.
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);
mWindowManager.updateViewLayout(mImgFloatingView, params);
// Log.d("Params", "X: " + params.x + ". Y: " + params.y + ".");
if(params.x == initialX && params.y == initialY) {
Toast.makeText(getBaseContext(), "Test", Toast.LENGTH_SHORT).show();
}
return true;
}
return false;
}
ACTION_DOWN вызывается, когда вы сначала наводите палец на экран.Затем, если вы держите палец на экране и начинаете его перемещать, ACTION_MOVE называется – yrazlik
Я понимаю, что, но моя проблема в том, что когда я просто нажимаю на «ImageView», сначала вызывается ACTION_DOWN, а затем ACTION_MOVE. Это происходит даже тогда, когда я просто нажимаю (клик), а не двигаюсь. Почему это? –