2013-04-28 60 views
0

首先,我想爲我的英語道歉。那不是我的母語。如何處理GridView中同一項上的onItemClickListener和OnTOuchListener?

我在Android中有一個簡單的圖庫。圖像加載在GridView。我有問題onItemClickListeneronTouchListener。對於GridViewImageViews)的孩子,我爲GridViewonTouchListener設置了onItemClickListener。當我點擊圖片時,它應該顯示在手機屏幕的中心,當我按下它時,它應該放大我手指所在的位置,當我鬆開手指時,它應該縮小。

問題是,當設置爲onTouchListener時,只有它被觸發。我想知道我何時點擊以及何時按下 - 發佈。

謝謝你的幫助。

回答

0

你正在尋找檢查event.getAction()返回MotionEvent恆定值:

gridView.setOnTouchListener(new OnTouchListener() { 

     @Override 
     public boolean onTouch(View v, MotionEvent event) { 
      switch (event.getAction()) { 
      case MotionEvent.ACTION_DOWN: 
       //Do something when user touch the screen 
       //(first touch event-before moving or releasing the finger) 
       break; 
      case MotionEvent.ACTION_UP: 
       //Do something when user release the finger touching the screen. 
       break; 
      } 
      return false; 
     } 
    }); 

你也有ACTION_MOVE當用戶移動他的手指,他從屏幕(適合拖動等發佈之前,其存在的.. 。)

編輯:

onTouch()的問題是,它僅適用於整個視圖存在(你的網格),你沒有onItemTouch() 。一種解決方案是當onItemClick()發生在類定義的變量(例如您單擊的圖片的Bitmap)中時從項目獲取所需的信息,然後將其用於onTouch()事件中的任何需要。如果您在任何時候返回true,則表示您已經處理了觸摸事件,並且不會發生onClick()。另外 - 只需在屏幕上釋放手指(意味着MotionEvent.ACTION_UP)時點擊呼叫,以便您不會在觸摸事件中使用它。

要解決此問題,您需要使用onItemLongClick()替代方案,或者使用自定義適配器(在getView())中爲網格中的每個項目設置onTouchListener

+0

是的,它正在工作,但如何觸發ItemClick方法?我必須實施兩項行動。它類似於網站上的下拉菜單 - 當我在菜單上方有鼠標光標時,它是li:懸停然後它是可見的,當我點擊菜單中的某個選項時,我會轉到已鏈接的網站。 我想使一些類似的android和圖像。 – 2013-04-28 17:05:38

+0

我的回答太長,所以我編輯了我的原始答案... – 2013-04-28 17:30:35

相關問題