Android新增onKeyLongPress事件

2021-07-02 20:34:24 字數 1942 閱讀 5992

在應用開發當中,有的時候需要捕捉按鍵的長按事件,從android2.0開始,activity當中就包含public

方法boolean

onkeylongpress

(int

keycode

,keyevent

event

);按照正常的開發流程,為了響應onkeylongpress事件,我們需要過載onkeylongpress()方法,測試發現onkeylongpress並不能被正常的呼叫,為何?

經過檢視android api才發現,為了能讓系統呼叫onkeylongpress方法,我們必須要在onkeydown方法中呼叫event.starttracking()方法並返回true才可以。

接下來,我們就可以新增長按事件的業務**了。

android獲取長按按鍵響應

android專案中有不少地方需要對按鍵的長按操作進行 響應;例如長按物理選單按鍵/音量上下按鍵等。

在activity以及view中均有乙個方法onkeylongpress();但過載該方法之後,並不能對長按操作進行響應。

onkeylongpress()方法:

public boolean onkeylongpress(int keycode, keyevent event)

不能正常響應的原因:

onkeydown()中沒有對短按,長按事件進行識別。如要對長按事件進行響應,要在onkeydown()中新增如下**:

if (event.getrepeatcount() == 0) else

onkeydown()**示例如下:

public boolean onkeydown(int keycode, keyevent event) else

return true;

case keyevent.keycode_volume_up:

case keyevent.keycode_dpad_up:

return true;

case keyevent.keycode_volume_down:

case keyevent.keycode_dpad_down:

return true;

} return super.onkeydown(keycode, event);

}

要處理onkeylongpress和onkeyup的衝突事件

1、新增變數

private boolean locklongpresskey;//是否長按

2、在onkeylongpress中

public boolean onkeylongpress(int keycode, keyevent event)

3、在onkeyup()中要新增衝突處理,如下:

public boolean onkeyup(int keycode, keyevent event) 

return true;

case keyevent.keycode_volume_up:

case keyevent.keycode_dpad_up:

return true;

case keyevent.keycode_volume_down:

case keyevent.keycode_dpad_down:

return true;

} return super.onkeyup(keycode, event);

}

注意問題:

新增長按響應以後要在onkeyup()中新增長按衝突處理,否則長按事件和up事件響應會同時起作用。

Android 動態新增view

android 動態新增view 第一次寫部落格,記錄一下平時出現bug。這兩天寫乙個東西,要動態的迴圈的新增乙個layout,走了一點彎路,說實話,我也是乙個android菜鳥,好記性不如爛筆頭,現在記錄下來,以免以後在遇到這樣的坑。進入主題,直接上 private void initattrib...

Android按需新增Google Play服務

以前無論使用何種google play服務,都是直接在gradle檔案中引用乙個庫。compile com.google.android.gms play services 9.4.0 這直接導致放法數超過了65535,後來發現從6.5版本以後是可以按需引用的,如下 compile com.goog...

Android按需新增Google Play服務

以前無論使用何種google play服務,都是直接在gradle檔案中引用乙個庫。compile com.google.android.gms play services 9.4.0 這直接導致放法數超過了65535,後來發現從6.5版本以後是可以按需引用的,如下 compile com.goog...