2013-01-24 19 views
0

我有一個實現onGestureListener的活動。如何檢測同一活動中的雙擊事件?是否有可能在活動中識別雙擊事件?活動中的雙擊事件

它也不承認長按?有什麼幫助嗎?

+0

我已經使用定時器在onTouch方法它做任何觀點。不知道你是否會感興趣。 –

+0

哦,你說你喜歡1560ms的觸摸事件嗎? – dashuser

+0

是的,就像那樣。它並不理想,但我知道,除非你願意花費大量時間,否則實現雙擊很困難。雙擊並不是一個規定的行爲,但android用戶很少會雙擊自己的東西。 –

回答

4

GestureDetector允許你指定OnDoubleTapListener以及OnGestureListener。您唯一需要做的就是實施OnDoubleTapListener並覆蓋它的onDoubleTap方法。

你也可以使用SimpleOnGestureListener並只覆蓋你想要的。

final Context context = this; 
final GestureDetector.SimpleOnGestureListener listener = new GestureDetector.SimpleOnGestureListener() { 
    @Override 
    public boolean onDoubleTap(MotionEvent e) { 
     Toast.makeText(context, "onDoubleTap", Toast.LENGTH_SHORT).show(); 
     return true; 
    } 

    @Override 
    public void onLongPress(MotionEvent e) { 
     Toast.makeText(context, "onLongPress", Toast.LENGTH_SHORT).show(); 
    } 
}; 

final GestureDetector detector = new GestureDetector(listener); 

detector.setOnDoubleTapListener(listener); 
detector.setIsLongpressEnabled(true); 

getWindow().getDecorView().setOnTouchListener(new View.OnTouchListener() { 
    @Override 
    public boolean onTouch(View view, MotionEvent event) { 
     return detector.onTouchEvent(event); 
    } 
}); 
1

這是你可能會在此網站上發現,並回答你的問題:OnTap listener implementation

+0

不,我已經看到了!:D謝謝反正!我想它與手勢檢測器一起工作! – dashuser

+0

@ user1922235可能更新你的問題,以便後來的人可以有一個清晰的地圖:) – dumbfingers

0

因爲你可以像這樣

ivPost.setOnTouchListener(new View.OnTouchListener() { 
      private GestureDetector gestureDetector = new GestureDetector(ActivityName.this, new GestureDetector.SimpleOnGestureListener() { 
       @Override 
       public boolean onDoubleTap(MotionEvent e) { 
        Log.d("TEST", "onDoubleTap"); 
        return super.onDoubleTap(e); 
       } 
       @Override 
       public boolean onSingleTapConfirmed(MotionEvent event) { 
        Log.d("TEST", "onSingleTap"); 
        return false; 
       } 
      }); 

      @Override 
      public boolean onTouch(View v, MotionEvent event) { 

       gestureDetector.onTouchEvent(event); 
       return true; 
      } 


     });