Android鍵盤事件

來源:互聯網
上載者:User

標籤:on()   action_up   class   重寫   接收   turn   rate   key   pre   

在activity中重寫了dispatchKeyEvent事件,不論最後返回TRUE還是FALSE都不會執行onKeyDown事件了嗎?

找到的一些資料卻不是這樣解釋的:
當鍵盤按下時
首先觸發dispatchKeyEvent
然後觸發onUserInteraction
再次onKeyDown
如果按下緊接著鬆開,則是倆步
緊跟著觸發dispatchKeyEvent
然後觸發onUserInteraction

再次onKeyUp

dispatchKeyEvent是做按鍵處理和分發的工作,如果你想要onKeyDown還可以接收到應該這樣實現
public boolean dispatchKeyEvent(KeyEvent event){
  return super.dispatchKeyEvent(event);
}

代碼測試如下:

在dispatchKeyEvent(KeyEvent event)中按鍵的按下抬起都會進行操作,在處理完一個按鍵動作時無論return true 還是 false ,onKeyDown(int keyCode, KeyEvent event)和onKeyUp(int keyCode, KeyEvent event)都不會再進行按鍵處理:

第1種情況及log資訊:

public void DEBUG(String str) {          Log.d(TAG, str);      }            @Override      public boolean onKeyDown(int keyCode, KeyEvent event) {          // TODO Auto-generated method stub          DEBUG(" onKeyDown " + keyCode );          return super.onKeyDown(keyCode, event);      }        @Override      public boolean onKeyLongPress(int keyCode, KeyEvent event) {          // TODO Auto-generated method stub          DEBUG("  onKeyLongPress " + keyCode );          return super.onKeyLongPress(keyCode, event);      }      @Override      public boolean dispatchKeyEvent(KeyEvent event) {          // TODO Auto-generated method stub          DEBUG("  dispatchKeyEvent 1 key = " + event.getKeyCode() + " event =  " + event.getAction());          if(event.getAction()==KeyEvent.ACTION_DOWN){              DEBUG("  dispatchKeyEvent 2 ACTION_DOWN" + event.getKeyCode() );              return super.dispatchKeyEvent(event);          }          if(event.getAction()==KeyEvent.ACTION_UP){              DEBUG("  dispatchKeyEvent 3 ACTION_UP" + event.getKeyCode() );              return super.dispatchKeyEvent(event);          }          return super.dispatchKeyEvent(event);      }        @Override      public boolean onKeyUp(int keyCode, KeyEvent event) {          // TODO Auto-generated method stub          DEBUG(" onKeyUp " +  keyCode);          return super.onKeyUp(keyCode, event);      }  
log資訊: 

D/ testMainActivity (  853):   dispatchKeyEvent 1 key = 23 event =  0
D/ testMainActivity (  853):   dispatchKeyEvent 2 ACTION_DOWN23
D/ testMainActivity (  853):  onKeyDown 23
D/ testMainActivity (  853):   dispatchKeyEvent 1 key = 23 event =  1
D/ testMainActivity (  853):   dispatchKeyEvent 3 ACTION_UP23
D/ testMainActivity (  853):  onKeyUp 23

 

  

Android鍵盤事件

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.