2013-08-29 3 views
0

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

@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?

Благодаря

+0

Ваш вопрос не имеет большого смысла. Хотя вы не можете изменить «MotionEvent», хотя вы могли бы, например, сделать так, чтобы каждый раз, когда вы нажимаете/прикасаетесь, он будет вычислять время с момента последнего нажатия, а затем делать разные вещи в соответствии с тем временем. – Vallentin

+0

Проверьте мой обновленный ответ; Я верю, что вы возвращаете неправильные значения в 'onXTap' функции – gunar

ответ

0

По жест слушателю documentation, вам нужно вернуться верно для onSingleTapConfirmed & onDoubleTap. В противном случае событие не расходуется, а gestureDetector.onTouchEvent(me); возвращает false.

+0

, что он возвращает в' onSingleTapConfirmed', отличается от того, что возвращает 'gestureDetector'. – bogdan

+0

Вот почему я сказал, что не уверен в этом. Должен был опубликовать это скорее как комментарий ... – gunar

+0

Я проверил документацию, и кажется, что 'onSingleTapConfirmed' и' onDoubleTap' возвращали неправильные значения. – gunar