国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 系統 > Android > 正文

Android 鍵盤開發知識點總結

2019-10-22 18:09:59
字體:
來源:轉載
供稿:網友

先廢話一下,說說開發鍵盤的原因:像理財產品、銀行等app客戶端登錄時,尤其是要輸入密碼時,會屏蔽掉系統默認輸入法,改為自己的輸入法!這個是考慮安全,以及防止被輸入法軟件記錄密碼等問題!所以,安全性極高的app都會要求密碼等都用自己的輸入法,這就有開發的需求 了!

言歸正傳:開發這種軟件盤,從什么地方開始著手呢?

步驟1:

先看Android給我們提供的Demo 

關于軟鍵盤的Demo,在以下目錄中能找到: 

../samples/android-22/legacy/SoftKeyboard

步驟二:鍵盤布局

從Demo中可以看出,鍵盤的開發和界面開發不一樣,雖然鍵盤也需要布局,但是卻不是用的布局文件,而是在xml目錄里的文件 

先來看個:

qwerty.xml文件:

<Keyboard xmlns:android="http://schemas.android.com/apk/res/android" android:keyWidth="10%p" android:horizontalGap="0px" android:verticalGap="0px" android:keyHeight="@dimen/key_height" > <Row>  <Key android:codes="113" android:keyLabel="q" android:keyEdgeFlags="left"/>  <Key android:codes="119" android:keyLabel="w"/>  <Key android:codes="101" android:keyLabel="e"/>  <Key android:codes="114" android:keyLabel="r"/>  <Key android:codes="116" android:keyLabel="t"/>  <Key android:codes="121" android:keyLabel="y"/>  <Key android:codes="117" android:keyLabel="u"/>  <Key android:codes="105" android:keyLabel="i"/>  <Key android:codes="111" android:keyLabel="o"/>  <Key android:codes="112" android:keyLabel="p" android:keyEdgeFlags="right"/> </Row> <Row>  <Key android:codes="97" android:keyLabel="a" android:horizontalGap="5%p"     android:keyEdgeFlags="left"/>  <Key android:codes="115" android:keyLabel="s"/>  <Key android:codes="100" android:keyLabel="d"/>  <Key android:codes="102" android:keyLabel="f"/>  <Key android:codes="103" android:keyLabel="g"/>  <Key android:codes="104" android:keyLabel="h"/>  <Key android:codes="106" android:keyLabel="j"/>  <Key android:codes="107" android:keyLabel="k"/>  <Key android:codes="108" android:keyLabel="l" android:keyEdgeFlags="right"/> </Row> <Row>  <Key android:codes="-1" android:keyIcon="@drawable/sym_keyboard_shift"     android:keyWidth="15%p" android:isModifier="true"    android:isSticky="true" android:keyEdgeFlags="left"/>  <Key android:codes="122" android:keyLabel="z"/>  <Key android:codes="120" android:keyLabel="x"/>  <Key android:codes="99" android:keyLabel="c"/>  <Key android:codes="118" android:keyLabel="v"/>  <Key android:codes="98" android:keyLabel="b"/>  <Key android:codes="110" android:keyLabel="n"/>  <Key android:codes="109" android:keyLabel="m"/>  <Key android:codes="-5" android:keyIcon="@drawable/sym_keyboard_delete"     android:keyWidth="15%p" android:keyEdgeFlags="right"    android:isRepeatable="true"/> </Row> <Row android:rowEdgeFlags="bottom">  <Key android:codes="-3" android:keyIcon="@drawable/sym_keyboard_done"     android:keyWidth="15%p" android:keyEdgeFlags="left"/>  <Key android:codes="-2" android:keyLabel="123" android:keyWidth="10%p"/>  <!--   android:codes: -101 is not a framework-defined key code but a key code that is   privately defined in com.example.android.softkeyboard.LatinKeyboardView.  -->  <Key android:codes="-101" android:keyIcon="@drawable/sym_keyboard_language_switch"    android:keyWidth="10%p"/>  <Key android:codes="32" android:keyIcon="@drawable/sym_keyboard_space"     android:keyWidth="30%p" android:isRepeatable="true"/>  <Key android:codes="46,44" android:keyLabel=". ,"    android:keyWidth="15%p"/>  <Key android:codes="10" android:keyIcon="@drawable/sym_keyboard_return"     android:keyWidth="20%p" android:keyEdgeFlags="right"/> </Row></Keyboard>

分析一下: 

1>從以上代碼可以看出,布局主要是在Keyboard的文件里進行的,每一行以< Row>開始和結束,鍵則是以< key>為起始節點,而鍵盤是監聽鍵的數字碼為主要監聽對象的,label 只是鍵盤的顯示標簽; 

2> 而Keyboard 節點里的屬性android:keyWidth=”10%p” 是指:如果鍵key的節點里沒有該屬性,則寬度為 整個屏幕寬度的10%,如果key的節點里有該屬性,則以key的節點屬性為最終值; 

3>key節點屬性里android:codes=”46,44” ,codes為兩個,意思是:第一次點擊是46的字符串,第二次點擊是44的字符串,兩次點擊相隔一秒的時間;

步驟三:分析代碼

鍵盤組件是繼承KeyboardView,而自定義的,通過使用Keyboard類加載鍵盤布局文件,并通過KeyboardView.setKeyboard(Keyboard keyboard)的方法,將布局賦值到View里;具體如下: 

1>使用Keyboard類加載xml文件:

Keyboard keyboard=new Keyboard(context, R.xml.qwerty);

2>將Keyboard賦值給view,使用KeyboardView里的方法setKeyboard賦值

setKeyboard(keyboard);

步驟四 給View設置監聽事件

設置監聽事件setOnKeyboardActionListener,實現onKey的方法,

步驟五:EditText使用場景布局

在使用指定輸入法的Activity布局里,添加以下代碼

<RelativeLayout  android:layout_width="fill_parent"  android:layout_height="wrap_content" >  <android.inputmethodservice.KeyboardView   android:id="@+id/keyboard_view"   android:layout_width="fill_parent"   android:layout_height="wrap_content"   android:layout_alignParentBottom="true"   android:focusable="true"   android:focusableInTouchMode="true"   android:background="@color/lightblack"   android:keyBackground="@drawable/btn_keyboard_key"    android:keyTextColor="@color/white"   android:visibility="gone" /> </RelativeLayout>

1>開發鍵盤時,遇到以下問題:

Android,鍵盤開發

點擊的Popup,字體都是白色的,有時是黑色的,和主題有關系,解決方法: 

KeyboardView有一個屬性,keyPreviewLayout,即是預覽鍵盤的布局文件,可以自己定義,以TextView 為布局文件的根節點 

2>預覽布局文件的Popup 高度太高,如何調整,想調整成方形的: 
KeyboardView有一個屬性keyPreviewHeight,即是預覽額高度,即可以調整


注:相關教程知識閱讀請移步到Android開發頻道。
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 古交市| 芒康县| 菏泽市| 大悟县| 平塘县| 广安市| 博乐市| 西充县| 从江县| 得荣县| 吐鲁番市| 苏尼特左旗| 荣昌县| 大厂| 望城县| 盐山县| 宝清县| 巴林右旗| 利津县| 晋宁县| 罗定市| 临海市| 安仁县| 龙山县| 华坪县| 富川| 荃湾区| 闽清县| 洛宁县| 昭苏县| 化隆| 乌海市| 阳原县| 咸丰县| 克拉玛依市| 舒城县| 新民市| 连江县| 阿克陶县| 新干县| 巴楚县|