Двойное нажатие в представлении Android

В представлении я хочу обнаружить как одиночное нажатие, так и двойное нажатие. Он отлично работает со мной. Я могу обнаружить как одиночное, так и двойное нажатие. Пожалуйста, найдите мой код

@Override
    public boolean onTouch(View view, MotionEvent me) {
        // No dragging during animation at the moment.
        // TODO: Stop animation on touch event and return to drag mode.
        boolean result = true;
        result = gestureDetector.onTouchEvent(me);//return the double tap events
        if(result)
            return false;

switch (me.getAction()) {
        case MotionEvent.ACTION_DOWN:
case MotionEvent.ACTION_MOVE:
case MotionEvent.ACTION_CANCEL:
        case MotionEvent.ACTION_UP:
}


private class GestureListener extends GestureDetector.SimpleOnGestureListener {

        private String fileName;



        @Override
         public boolean onSingleTapConfirmed(MotionEvent e) {
          // TODO Auto-generated method stub

          return false;
         }

        // event when double tap occurs
        @Override
        public boolean onDoubleTap(MotionEvent e) {

            float x = e.getX();
                float y = e.getY();
                if(player!=null && player.isPlaying())
                {
                    player.stop();
                }
                else
                {
                    setFileName(x);
                    player = new AudioPlayer(fileName);
                    player.play();
                }


            return true;
        }


    }

Я делаю некоторый код в событии Action_UP. Так что даже когда я делаю двойной тап, для первого тапа вызывается событие ACTION_UP и выполняется соответствующий код. Я хочу предотвратить это. Как я могу это сделать. Я просто хочу убедиться, что ACTION_UP вызывается только тогда, когда пользователь закончит свой жест. Не сразу после его частичного жеста. В этом случае он вызывается при первом касании пальцем вверх.

Как я могу заставить это работать в Android?

Спасибо


person Zach    schedule 29.08.2013    source источник
comment
Ваш вопрос не имеет большого смысла. Хотя вы не можете изменить MotionEvent, хотя вы можете, например, сделать так, чтобы каждый раз, когда вы нажимаете / касаетесь, он вычислял время с момента последнего нажатия, а затем делал разные вещи в соответствии с этим временем.   -  person vallentin    schedule 29.08.2013
comment
Проверьте мой обновленный ответ; Я считаю, что вы возвращаете неверные значения в onXTap функциях   -  person gunar    schedule 29.08.2013


Ответы (1)


Согласно документации, вам нужно вернуть true для onSingleTapConfirmed и onDoubleTap. В противном случае событие не используется, и gestureDetector.onTouchEvent(me); возвращает false.

person gunar    schedule 29.08.2013
comment
то, что он возвращает в onSingleTapConfirmed, отличается от того, что возвращает gestureDetector. - person bogdan; 29.08.2013
comment
поэтому я и сказал, что не уверен в этом. Надо было написать это скорее как комментарий... - person gunar; 29.08.2013
comment
Я проверил документацию, и кажется, что onSingleTapConfirmed и onDoubleTap возвращали неправильные значения. - person gunar; 29.08.2013