效果图
说明:因篇幅原因,本文只讲API和一些属性,后面的文字,会有相应的Demo和代码分析
#1
KeyboardView
1 结构
java.lang.Object
↳ android.view.View
↳ android.inputmethodservice.KeyboardView
2 class overview类描述
3 总结:
2)XML Attributes
android:keyPreviewLayout 按钮按下时反馈的布局视图
android:keyPreviewOffset 反馈视图的垂直偏移,必须是dimension类型的值
android:keyTextColor 按钮文字的颜色
android:keyTextSize 按钮中字符的大小
android:popupLayout 布局资源弹出键盘
android:verticalCorrection 抵消触摸Y坐标,偏差纠正
#2
Keyboard
1.结构
extends Object
java.lang.Object
↳ android.inputmethodservice.Keyboard
2 class overview类描述
<Keyboard
android:keyWidth="%10p"
android:keyHeight="50px"
android:horizontalGap="2px"
android:verticalGap="2px" >
<Row android:keyWidth="32px" >
<Key android:keyLabel="A" />
...
</Row>
...
</Keyboard>
后缀为%是相对于基准的高度或者宽度,而%p则是相对于“父亲”的宽度或高度百分比
3 总结:
1)嵌套的类
:
class Keyboard.Row 列,
键在键盘的容器
2)XML Attributes
android:horizontalGap 每个Key之间默认的水平间距
android:keyHeight Key的默认高度.
android:keyWidth Key的默认宽度..
android:verticalGap 每行(Row)之间的默认行间距
#3
Keyboard.Row
1 结构
java.lang.Object
↳ android.inputmethodservice.Keyboard.Row
2 class overview类描述
3 总结:
1)XML Attributes
android:horizontalGap 每个Key之间的默认间距.
android:keyHeight Key的默认高度
android:keyWidth Key的默认宽度
android:keyboardMode keyboard的模式(Mode)
android:rowEdgeFlags 边境标记
android:verticalGap 垂直Key之间的差距.
#4
Keyboard.Key
1 结构
java.lang.Object
↳ android.inputmethodservice.Keyboard.Key
2 class overview类描述
类用于描述一个键的位置和特征的键盘(按钮)
3 总结:
1)XML Attributes
android:codes (这个关键的unicode值或逗号分隔值输出)The unicode value or comma-separated values that this key outputs.
android:horizontalGap key之间的水平距离
android:isModifier (是否这是一个修改器关键如Alt或转变)Whether this is a modifier key such as Alt or Shift.
android:isRepeatable (是否long-pressing这个键会重复)Whether long-pressing on this key will make it repeat.
android:isSticky 是否这是一个切换键
android:keyEdgeFlags 边界标记
android:keyHeight 高度
android:keyIcon 代替label的图片
android:keyOutputText 按这个键时,输出字符的字符串
android:keyWidth 宽度
Demo:
<!-- this is the row that shows in both modes -->
<Row android:keyWidth="51dp">
<Key android:codes="49" android:keyLabel="1" />
<Key android:codes="50" android:keyLabel="2" />
<Key android:codes="51" android:keyLabel="3" />
<Key android:codes="52" android:keyLabel="4" />
<Key android:codes="53" android:keyLabel="5" />
<Key android:codes="54" android:keyLabel="6" />
<Key android:codes="55" android:keyLabel="7" />
<Key android:codes="56" android:keyLabel="8" />
<Key android:codes="57" android:keyLabel="9" />
<Key android:codes="48" android:keyLabel="0"/>
</Row>
#5 Key Code 对应表
1 数字
字符: 0 1 2 3 4 5 6 7 8 9
code: 48 49 50 51 52 53 54 55 56 57
2 字母
大小写可以用一套,通过java的API来修改得到的字符
字符: q w r t y u i 7 o p
code: 113 119 101 114 116 121 117 105 111 112
字符: a s d f g h j k l
code: 97 115 100 102 103 104 106 107 108
字符: z x c v b n m
code: 122 120 99 118 98 110 109
3 特殊符号
字符: 空格 .
code: 32 46
4 自定义
code 设置为负数,在代码中解析,如
<Key android:keyWidth="20.000004%p"
android:codes="-3"
android:keyEdgeFlags="right"
android:keyLabel="完成" />
解析:
public void onKey(int primaryCode,int[] keyCodes) {
switch (primaryCode) {
case -3:
//监听到了code为-3按钮按下
break;
...
}
}
...