Android APP檢測實體按鍵事件詳解
本文實例為大傢分享瞭Android APP檢測實體按鍵事件的具體代碼,供大傢參考,具體內容如下
一、檢測點擊按鍵事件一般不對手機上的輸入按鍵進行處理,直接由系統按照默認情況操作。當然有時為瞭改善用戶體驗,需要讓應用攔截按鍵事件,並進行額外處理。 要想監控按鍵事件,首先得知道每個按鍵的編碼,這樣才能根據不同的編碼值進行相應的處理。監聽器OnKeyListener隻會檢測控制鍵,不會檢測文本鍵。實際測試發現HOME、SWICH、POWER普通的app是接收不到事件的,這幾個事件在framew裡面處理瞭。
二、部分控制鍵KEYCODE
三、測試代碼
1、android_studio_app\keyeventdemo\app\src\main\java\com\example\keyeventdemo\MainActivity.java
package com.example.keyeventdemo; import android.os.Bundle; import android.os.Handler; import android.support.v7.app.AppCompatActivity; import android.view.KeyEvent; import android.view.View; import android.widget.EditText; import android.widget.TextView; public class MainActivity extends AppCompatActivity { private TextView key_result; private String desc = ""; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); key_result = (TextView) findViewById(R.id.key_result); } @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); key_result = (TextView) findViewById(R.id.key_result); } @Override public boolean onKeyDown(int keyCode, KeyEvent event) { desc = String.format("%sphysical key coce is %d", desc, keyCode); if (keyCode == KeyEvent.KEYCODE_BACK) { desc = String.format("%s, KEYCODE_BACK", desc); } else if (keyCode == KeyEvent.KEYCODE_MENU) { desc = String.format("%s, KEYCODE_MENU", desc); } else if (keyCode == KeyEvent.KEYCODE_VOLUME_UP) { desc = String.format("%s, KEYCODE_VOLUME_UP", desc); } else if (keyCode == KeyEvent.KEYCODE_VOLUME_DOWN) { desc = String.format("%s, KEYCODE_VOLUME_DOWN", desc); }else { desc = String.format("%s, KEYCODE_VOLUME is unknown", desc); } desc = desc + "\n"; key_result.setText(desc); //返回true表示不再響應系統動作,返回false表示繼續響應系統動作 return true; // return false; } }
2、佈局文件 activity_main.xml
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical" android:padding="5dp"> <TextView android:id="@+id/tv_hard" android:layout_width="match_parent" android:layout_height="40dp" android:gravity="center" android:text="please press the physics button" android:textSize="16sp" /> <TextView android:id="@+id/key_result" android:layout_width="match_parent" android:layout_height="wrap_content" android:textSize="16sp" /> </LinearLayout>
四、測試效果
以上就是本文的全部內容,希望對大傢的學習有所幫助,也希望大傢多多支持WalkonNet。
推薦閱讀:
- Android seekbar實現可拖動進度條
- Android文本視圖TextView實現跑馬燈效果
- Android使用setContentView實現頁面的轉換效果
- Android抽屜佈局DrawerLayout的簡單使用
- Android實現簡單計算器界面