在應用開發當中,有的時候需要捕捉按鍵的長按事件,從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...