2011-05-27 46 views
3

我需要在多於一個視圖上檢測不同的手勢。我的觀點需要能夠接收點按,雙擊和拖動事件。我嘗試了手勢檢測器,但是我的實現只顯示全局手勢事件,而我無法將這些事件連接到特定視圖。android - 在不同視圖上檢測手勢

在我activity.onCreate

dthandler = new DoubleTapHandler(); 
    mDetector = new GestureDetector(this,dthandler); 
    gestureListener = new View.OnTouchListener() { 
    public boolean onTouch(View v, MotionEvent event) { 
     Log.d("myLog","touch"); 
     mDetector.onTouchEvent(event); 
     return false; 
    } 
}; 
在我的活動我

覆蓋dispatchTouch功能:

@Override 
     public boolean dispatchTouchEvent(MotionEvent me){ 
     this.mDetector.onTouchEvent(me); 
     return super.dispatchTouchEvent(me); 
     } 

這是我嘗試使用TouchEvent我的看法連接:

prod.setOnTouchListener(this.gestureListener); 

我DoubleTapHandler:

public class DoubleTapHandler implements OnDoubleTapListener, OnGestureListener { 
     private ProductView relatedView; 

     @Override 
     public boolean onDoubleTapEvent(MotionEvent e) { 
      Log.d("myLog", "onDoubleTapEvent"); 
      Log.d("myLog",""+e.getSource()); 
      return false;      
     } 

     @Override 
     public boolean onDoubleTap(MotionEvent e) { 
      Log.d("myLog", "onDoubleTap"+relatedView); 
      return false; 
     } 

     @Override 
     public boolean onSingleTapConfirmed(MotionEvent e) { 
      Log.d("myLog", "singletap"); 
      return false; 
     } 
} 

任何人有一個建議嗎? 謝謝!

回答

2

爲了使它的工作,直接連接手勢每個視圖,你可以有不同的實現則。

+0

我該怎麼做? – Anthea 2011-05-27 09:55:44

+0

你做了prod.setOnTouchListener(),你也可以做特定的視圖,以使他們對你的手勢作出反應。 – ACM64 2011-05-27 10:12:58

+0

正確的我做到了(prod是我的觀點之一)。但我沒有收到這個觀點的姿態。我只收到OnTouch事件。 – Anthea 2011-05-27 10:46:44

1

瘋狂的想法。在一些視圖中創建全局手勢監聽器,將其全部包裝。並在所有視圖中手動調用dispatchTouchEvent。這很棘手,但它可以工作。

然後在你的看法添加onTouchEventListenrer。

如果這不起作用,比正確的方法是:通過你自己實現手勢監聽器(點擊和拖動應該不那麼難),並與intercept touch events一起工作。