編輯:關於Android編程
============
Android 增加按鍵:
ScanCode -> KeyCodeLabel -> KeyCode -> Keyevent
-----
1) 鍵掃描碼ScanCode是由linux的Input驅動框架定義的整數類型,可參考input.h頭文件(./external/kernel-headers/original/linux/input.h)。
2) 按鍵碼(KeyCode),這個按鍵碼是一個整數,在上層的JAVA程序中主要通過這個值來判斷系統的實現。
----
實現過程:
1, ScanCode -> KeyCodeLabel。
鍵盤布局文件(*.kl) 把ScanCode轉換為KeyCodeLabel。 .kl文件在源碼的devices文件夾中或設備中的/system/usr/keylayout/.kl。
key 102 HOME
2,KeyCodeLabel -> KeyCode。
通過查找KEYCODES[]數組,得到KeyCodeLabel字符串對應的KeyCode值。KEYCODES[]在文件frameworks/base/include/ui/KeycodeLabels.h 中。
static const KeycodeLabel KEYCODES[] = {
...
{ "HOME", 3 },
在frameworks/base/native/include/android/keycodes.h中定義KeyCode的枚舉值。
enum {
....
AKEYCODE_HOME = 3,
3,KeyCode -> Keyevent。
KeyEvent.java中的對應KeyCode:(文件路徑:frameworks/base/core/java/android/view/KeyEvent.java)。如果改動了KeyEvent,影響到API則需要調用make update-api。
public static final int KEYCODE_HOME = 3;
....
names.append(KEYCODE_HOME, "KEYCODE_HOME");
....
4,在frameworks\base\core\res\res\values\attrs.xml中增加表示屬性的資源文件,添加相應用name="keycode"的attr。
keyevent.java中的注釋
// NOTE: If you add a new keycode here you must also add it to:
// isSystem()
// native/include/android/keycodes.h
// frameworks/base/include/ui/KeycodeLabels.h
// external/webkit/WebKit/android/plugins/ANPKeyCodes.h
// tools/puppet_master/PuppetMaster/nav_keys.py
// frameworks/base/core/res/res/values/attrs.xml
// commands/monkey/Monkey.java
// emulator?
//
// Also Android currently does not reserve code ranges for vendor-
// specific key codes. If you have new key codes to have, you
// MUST contribute a patch to the open source project to define
// those new codes. This is intended to maintain a consistent
// set of key code definitions across all Android devices.
=============
轉載請注明出處,謝謝~~目錄本文概述 動畫補充說明 屬性動畫的View加載方式 TypeEvaluator的使用 TimeInterpolator LayoutTrans
一、實現思路1、在build.gradle中添加依賴,例如:compile com.android.support:support-v4:23.4.0compile co
本文實例講述了Android編程之View簡單學習示例。分享給大家供大家參考,具體如下:View,是Android的一個超類,這個類幾乎包含了所有的屏幕類型。每一個Vie
Android ListView的優化,在做Android項目的時候,在用到ListView 界面及數據顯示,這個時候如果資源過大,對項目來說,用戶體驗肯定是不好的,這裡