自定义键盘基础知识及xml属性配置

效果图



说明:因篇幅原因,本文只讲API和一些属性,后面的文字,会有相应的Demo和代码分析

#1 KeyboardView

1 结构
java.lang.Object
↳ android.view.View
↳ android.inputmethodservice.KeyboardView

2 class overview类描述
一个视图,它显示虚拟键盘。它处理呈现的键和检测按键和触摸动作。

3 总结:
1)嵌套的类 : KeyboardView.OnKeyboardActionListener,用于 虚拟键盘事件的侦听器
2)XML Attributes
android:keyBackground 键盘按钮的背景 ,建议用drawable类型选择器,显示选中与未选中效果
android:keyPreviewLayout 按钮按下时反馈的布局视图
android:keyPreviewOffset 反馈视图的垂直偏移,必须是dimension类型的值
android:keyTextColor 按钮文字的颜色
android:keyTextSize 按钮中字符的大小
android:labelTextSize 没有图片的按钮中文本大小
android:popupLayout 布局资源弹出键盘
android:verticalCorrection 抵消触摸Y坐标,偏差纠正

#2 Keyboard
1.结构
extends Object
java.lang.Object
↳ android.inputmethodservice.Keyboard
2 class overview类描述
加载的XML描述键盘和存储的属性键。一个键盘(Keyboard)由成排(Row)的钥匙(Key)组成。
键盘的布局文件为XML格式,如:
<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.Key 按钮, 类用于描述一个键的位置和特征的键盘 .
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类描述
键(Key)在键盘的容器。所有键连续在同一(Y)坐标。一些关键尺寸每行可以覆盖默认的键盘( Keyboard )定义。
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:iconPreview 预览中显示的图片
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:keyLabel 显示在按钮上的内容.
android:keyOutputText 按这个键时,输出字符的字符串
android:keyWidth 宽度
android:popupCharacters 字符显示在弹出键盘
android:popupKeyboard XML任何弹出键盘的键盘布局

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;
...
}
}
...

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐


php输出xml格式字符串
J2ME Mobile 3D入门教程系列文章之一
XML轻松学习手册
XML入门的常见问题(一)
XML入门的常见问题(三)
XML轻松学习手册(2)XML概念
xml文件介绍及使用
xml编程(一)-xml语法
XML文件结构和基本语法
第2章 包装类
XML入门的常见问题(二)
Java对象的强、软、弱和虚引用
JS解析XML文件和XML字符串详解
java中枚举的详细使用介绍
了解Xml格式
XML入门的常见问题(四)
深入SQLite多线程的使用总结详解
PlayFramework完整实现一个APP(一)
XML和YAML的使用方法
XML轻松学习总节篇