2011-10-11 76 views
2

如何使用onItemLongClick來集成GestureDetector?使用onItemLongclick的手勢檢測器

我有一個GridView包含三個圖像。當我觸摸第一張圖片時,我想顯示Toast消息。當我從屏幕上擡起手指時,我想顯示第二個Toast消息。

我知道GestureDetector使用MotionEvent,但onItemLongClick不。但在這種情況下,我需要跟蹤圖像在網格中的位置ID,因此無法在onTouch()內實現?

+0

爲什麼你需要longclick當你想要的只是onTouchEvent並嗅出你想要的動作事件。 http://developer.android.com/reference/android/view/MotionEvent.html – JPM

+0

嗨,但如果觸摸第一個圖像,並且將手指拖動到第二個圖像而不擡起手指,MotionEvent將能夠跟蹤此操作? 如果不是,我應該使用什麼類? – star

回答

0

您可以使用此類跟蹤光標的運動,無論是屏幕觸摸還是TrackBall移動,並且如果它跨越到下一張圖片中,則可以處理該事件。下面是從SDK中的例子所採取的例子:

@Override public boolean onTouchEvent(MotionEvent event) { 
     int action = event.getActionMasked(); 
     if (action != MotionEvent.ACTION_UP && action != MotionEvent.ACTION_CANCEL) { 
      int N = event.getHistorySize(); 
      int P = event.getPointerCount(); 
      for (int i = 0; i < N; i++) { 
       for (int j = 0; j < P; j++) { 
        mCurX = event.getHistoricalX(j, i); 
        mCurY = event.getHistoricalY(j, i); 
        drawPoint(mCurX, mCurY, 
          event.getHistoricalPressure(j, i), 
          event.getHistoricalTouchMajor(j, i)); 
       } 
      } 
      for (int j = 0; j < P; j++) { 
       mCurX = event.getX(j); 
       mCurY = event.getY(j); 
       drawPoint(mCurX, mCurY, event.getPressure(j), event.getTouchMajor(j)); 
      } 
     } 
     return true; 
    } 

你可以閱讀更多,請參閱下,在您的SDK文件:\ YourInstallDir \ Android的SDK \樣本\ Android的10 \ ApiDemos的\ src \ COM \例如\ android \ apis \ graphics \ TouchPaint.java或者只搜索MotionEvent的整個示例文件,還有其他幾個用途。

+0

嗨,謝謝你的例子。我想知道有沒有方法,我可以跟蹤哪些元素是焦點(如在挖掘)? – star

+0

不知道你可能不得不自己處理或使用某種反射來做到這一點。 – JPM