Подтвердить что ты не робот

OnTouchEvent выполняет дважды

Может кто-нибудь объяснить мне, почему onTouchEvent выполняется дважды, и как я могу настроить его на запуск только один раз? Я не мог найти объяснения. Спасибо.

@Override
public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
    _iv = new ImageView(this);

    _map = BitmapFactory.decodeResource(getResources(), R.drawable.image);

        _iv.setImageBitmap(_map);
        _iv.invalidate();

    setContentView(_iv);
}

@Override
public boolean onTouchEvent(MotionEvent event) {
    double X = event.getX();
    double Y = event.getY();

    Toast.makeText(this, "X: " + X + " Y: " + Y, Toast.LENGTH_SHORT).show();

    return super.onTouchEvent(event);
}
4b9b3361

Ответ 1

Выполняется для каждого события. В этом случае это было бы для событий ACTION_DOWN и ACTION_UP. Он также будет выполняться для события ACTION_MOVE много, много раз.

Чтобы он выполнялся только в одном случае, выполните следующие действия:

switch(event.getAction())
{
  case MotionEvent.ACTION_DOWN:
    ** CODE ** 
    break;
  case MotionEvent.ACTION_MOVE:
    ** CODE ** 
    break;
  case MotionEvent.ACTION_UP:
    ** CODE **
    break;
}

Ответ 2

В операторе switch верните false для всех событий, которые вам не нужны.