android Gridiew等長按和短按的區別處理(如果是長按就相應長按而不執行短按,android長按時預設短按會執行的)

來源:互聯網
上載者:User

1,Android Gridview中按鍵事件的處理有三個方法  

  public boolean onKeyDown(int keyCode, KeyEvent event)

  public boolean onKeyUp(int keyCode, KeyEvent event)

  public boolean onKeyLongPress(int keyCode, KeyEvent event)

  很明顯,長按事件是放到 onKeyLongPress 函數中來處理的。

GridView如果長按時,預設會先相應短按事件(GridView.setOnItemClickListener())的,而長按鍵事件的處理不應該放到(GridView.setOnLongClickListener())中,而應該放到 onKeyLongPress 函數中來處理,這樣才能做到長按短按就能分開,如果一開始長按就相應長按,短按就相應短按,兩者不會亂掉或者說幹擾。

  具體請看如下步驟:

  第一步,先在 onKeyDown 函數中判斷 event.getRepeatCount 的次數(實際上長按就是由一系列的onKeyDown事件觸發的)

  @Override

  public boolean onKeyDown(int keyCode, KeyEvent event) {

             。。。。。。

   

     

       

       if (event.getRepeatCount() == 0) {

               event.startTracking();

               return true;

       }

    return super.onKeyDown(keyCode, event);

  }

  如果一直按著不放,可以通過Log 查看onKeyDown 的event.getRepeatCount() 數目變化

  

  

  第二步,重載 onKeyLongPressed 函數,在這個函數中你可以添加你的長按鍵事件的處理

  @Override

  public boolean onKeyLongPress(int keyCode, KeyEvent event) {  

            

                   lockLongPressKey = true;

                   長按鍵事件的處理部分;

                   return true;

              

         return super.onKeyLongPress(keyCode, event);

  }

  第三步,如果在onKeyUp 函數中也處理了相同的按鍵的話,那麼需要對 onKeyLongPress 和 onKeyUp 中該按鍵的處理作互斥處理了

  

  public boolean onKeyUp(int keyCode, KeyEvent event) {        

         if(lockLongPressKey){

                lockLongPressKey = false;

                return true;

           }

    

          return super.onKeyUp(keyCode, event);

  }

  互斥處理的原因是,長按事件處理完後,鬆開按鍵後就會執行 onKeyUp 函數。而這兩處針對相同的按鍵想要實現的功能又不一樣

  固在此添加一個 private boolean lockLongPressKey = false; 變數,在 onKeyLongPress 函數中處理過以後,在 onKeyUp中便不再處理。

  

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.