編輯:關於Android編程
Android獲取長按按鍵響應
Android項目中有不少地方需要對按鍵的長按操作進行 響應;例如長按物理菜單按鍵/音量上下按鍵等。
在Activity以及View中均有一個方法onKeyLongPress();但重載該方法之後,並不能對長按操作進行響應。
onKeyLongPress()方法:
public boolean onKeyLongPress(int keyCode, KeyEvent event) { // TODO Auto-generated method stub return super.onKeyLongPress(keyCode, event); }
不能正常響應的原因:
onKeyDown()中沒有對短按,長按事件進行識別。如要對長按事件進行響應,要在onKeyDown()中添加如下代碼:
if (event.getRepeatCount() == 0) { event.startTracking(); isLongPressKey = false; }else{ isLongPressKey = true; }
onKeyDown()代碼示例如下:
public boolean onKeyDown(int keyCode, KeyEvent event) { // TODO Auto-generated method stub Log.d(TAG,"---->>onKeyDown():keyCode="+keyCode); switch(keyCode){ case KeyEvent.KEYCODE_MENU://需要識別長按事件 case KeyEvent.KEYCODE_ENTER: case KeyEvent.KEYCODE_DPAD_CENTER: if (event.getRepeatCount() == 0) {//識別長按短按的代碼 event.startTracking(); isLongPressKey = false; }else{ isLongPressKey = true; } 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;//是否長按
public boolean onKeyLongPress(int keyCode, KeyEvent event) { // TODO Auto-generated method stub lockLongPressKey = true; return super.onKeyLongPress(keyCode, event); }
public boolean onKeyUp(int keyCode, KeyEvent event) { // TODO Auto-generated method stub Log.d(TAG,"---->> onKeyDown():keyCode="+keyCode); switch(keyCode){ case KeyEvent.KEYCODE_MENU: case KeyEvent.KEYCODE_ENTER: case KeyEvent.KEYCODE_DPAD_CENTER: if(lockLongPressKey){ lockLongPressKey = false; return true; } 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模塊的編譯過程。當Android系統的所有模塊都編譯好之後,我們就可以對編譯出來的模塊文件進行打包了。打包結果是獲得一系列的鏡像
1.准備工作每一個view,只是img不一樣,其他都是一樣的<framelayout android:layout_height=match_parent andr
相信很多開發者會把圖片存放到七牛上,我的web站點也是吧圖片存儲到七牛上,對於以圖片為主的站點,這樣可以節省很大帶寬。將圖片上傳到七牛服務器的重點就是獲得上傳憑證uplo
Monkeyrunner工具提供了一個API,使用此API寫出的程序可以在Android代碼之外控制Android設備和模擬器。一、Monkeyrunner簡介1.MOn