LatinIME输入法分析(只为备忘)
来源:互联网 发布:淘宝第一美女 编辑:程序博客网 时间:2024/05/16 16:00
http://blog.csdn.net/a345017062/article/details/6130261
输入法的设置在res/xml/method.xml的<input-method>标签中,主要设置两个属性:
android:settingsActivity,输入法的设置程序入口。
android:isDefault,这个输入法是不是系统的默认输入法。
另外,如果输入法的apk直接push到/system/app/下面的话,算是系统输入法,如果是以第三方程序的方式安装到/data/app/下面的话,算是第三方输入法,两个输入法目前来看,最大的不同在于,使用第三方输入法时必须在设置->语言和键盘当中手工启动。
最基本的字母布局由res/xml/下面的kbd_qwerty.xml,kbd_qwerty_black.xml定义,其它的还有符号布局,数字布局等也都在这个文件夹下面。当用户进行操作时,程序就会在这些布局之间来回切换。
对这些布局的解析由Keyboard(位于framework中)以及它的子类LatinIME(位于Latin输入法的源码中)一起完成,涉及到的主要方法有:
1、loadKeyboard:解析布局文件
2、LatinKeyboard.createKeyFromXml,Keyboard.createKeyFromXml:从XML文件创建一个按键。
3、getDimensionOrFraction:获取某一个属性的值。这个属性值的格式必须规定为Dimen(dip,px,sp,in等)或者Fraction(百分比)的。
4、LatinKeyboardBase.onBufferDraw:把所有的Key绘制在一张Bitmap上,再由继承自ViewonDraw方法把这张Bitmap渲染到onDraw传递过来的Canvas上。
绘制Key的时候,主要绘制两个东西,label和icon。对于a,b,c,1,2,&等这样可以用字符来表示的键,就绘制它的label属性。对于Shift,Alt等这样无法用字符表示的键,就绘制它的icon属性。
另外,大部分Key只绘制icon或label中的一个。而少部分Key,两个都绘制。比如qwertyuiop这几个Key,还会在Key的右上方有一个小的数字,这些小数字每一个都是一个icon,存放在LatinKeyboard的mNumberHintIcons数组中。而qwertyuiop这几个Key是一组比较特殊的Key,它们会在LatinKeyboard中有一个引用备份:mNumberHintKeys。每次用户按Shift来更新键盘布局时,除了会更新这几个Key的label之外,都会调用updateNumberHintKeys方法把它们的icon也赋值。
这次遇到的问题是LatinIME布局混乱,打开这个输入法时,整个输入法界面被挤在屏幕下方一个高度很小的矩形范围内。经过跟踪,发现输入法的布局的高度宽度,每个Key的高度宽度等信息都是定义在dimens.xml中的。而在dimens.xml中,这些尺寸的单位都是in,在程序当中把这些单位转化成像素以后,是个很小的值。最后把这些尺寸单位改为dip,并设置好合适的值就好了。看来是系统移植到板子上以后,in和像素之间进行转换时出问题了。
- LatinIME输入法分析(只为备忘)
- LatinIME输入法分析
- LatinIME输入法分析
- Android AOSP输入法(LatinIME)大写判断分析
- latinime输入法研究
- LatinIME输入法的一些总结
- Android AOSP输入法(LatinIME)输入流程二
- 只为分析APK。。。
- 关于Android 5.1 LatinIME的分析
- 在Android原生输入法LatinIME中添加自定义按键
- 修改Android 自带输入法(LatinIME)空格键的显示
- 一个注册为输入法的木马分析
- 使用Burp Suite进行XSS渗透测试 (只为自己做个备忘,甚读)
- 【备忘】Ubuntu中使用中文输入法
- LatinIME切换语言
- 修改其他输入法为android 默认输入法
- 分析文章备忘
- PMON代码分析备忘
- 增加系统调用
- vim的编码详解和中文环境设置
- syslog-ng.conf sample
- sql server 锁机制
- AJAX请求
- LatinIME输入法分析(只为备忘)
- 安装wireshark in ubuntu
- 了解SQL Server锁争用:NOLOCK 和 ROWLOCK 的秘密
- 多家知名企业笔试面试精华
- Linux系统下选择自己喜欢的vim配色方案
- DirectX 中的投影变换
- You can't specify target table 'wms_cabinet_form' for update in FROM clause
- Vim文件保存编码配置
- 批处理 笔记