Android隨筆之——按鍵長按事件onKeyLongPress


  現在安卓手機實體鍵是越來越少了,但還是有的,恰好自己就碰上了:按鍵的長按事件...百度了一些博客,內容都基本上是完全一樣的,雖然可以捕獲到長按事件,但卻會和正常的單擊沖突。幸好最近開個VPN,google,耶~正確答案馬上呈現在眼前,特此記錄,以防不時之需。

  這里我就直接貼谷歌的代碼的,很容易懂,不解釋,原文

 1 private boolean shortPress = false;
 2 
 3 @Override
 4 public boolean onKeyLongPress(int keyCode, KeyEvent event) {
 5     if (keyCode == KeyEvent.KEYCODE_VOLUME_DOWN) {
 6         shortPress = false;
 7         Toast.makeText(this, "longPress", Toast.LENGTH_LONG).show();
 8         return true;
 9     }
10     //Just return false because the super call does always the same (returning false)
11     return false;
12 }
13 
14 @Override
15 public boolean onKeyDown(int keyCode, KeyEvent event) {
16     if (keyCode == KeyEvent.KEYCODE_VOLUME_DOWN) {
17         if(event.getAction() == KeyEvent.ACTION_DOWN){
18             event.startTracking();
19             if(event.getRepeatCount() == 0){
20                 shortPress = true;
21             }
22             return true;
23         }
24     }
25     return super.onKeyDown(keyCode, event);
26 }
27 
28 @Override
29 public boolean onKeyUp(int keyCode, KeyEvent event) {
30     if (keyCode == KeyEvent.KEYCODE_VOLUME_DOWN) {
31         if(shortPress){
32             Toast.makeText(this, "shortPress", Toast.LENGTH_LONG).show();
33         } else {
34             //Don't handle longpress here, because the user will have to get his finger back up first
35         }
36         shortPress = false;
37         return true;
38     }
39     return super.onKeyUp(keyCode, event);
40 }

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM