1.关于输入法的一些设置重要文件

res/xml/method.xml

在该文件中在前面的博客http://blog.csdn.net/holdrise/article/details/8792294中说明可以添加键盘输入语言。

另外,还有其他的一些重要的设置:

输入法的设置在res/xml/method.xml的<input-method>标签中,主要设置两个属性:

android:settingsActivity,输入法的设置程序入口。

android:isDefault,这个输入法是不是系统的默认输入法。

2.adb push与adb install的区别

另外,如果输入法的apk直接push到/system/app/下面的话,算是系统输入法,如果是以第三方程序的方式安装到/data/app/下面的话,算是第三方输入法,两个输入法目前来看,最大的不同在于,使用第三方输入法时必须在设置->语言和键盘当中手工启动。

3.键盘的各种布局文件

最基本的字母布局由res/xml/下面的kbd_qwerty.xml,kbd_qwerty_black.xml定义,其它的还有符号布局,数字布局等也都在这个文件夹下面。当用户进行操作时,程序就会在这些布局之间来回切换。如果想添加不同语言的输入键盘,也是在这个目录下添加kbd的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上。

4.绘制key的大概理解

绘制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也赋值。

5.输入法显示问题

LatinIME布局混乱,打开这个输入法时,整个输入法界面被挤在屏幕下方一个高度很小的矩形范围内。输入法的布局的高度宽度,每个Key的高度宽度等信息都是定义在dimens.xml中的。而在dimens.xml中,这些尺寸的单位都是in,在程序当中把这些单位转化成像素以后,是个很小的值。最后把这些尺寸单位改为dip,并设置好合适的值就好了。看来是系统移植到板子上以后,in和像素之间进行转换时出问题了。

(注:通篇有参考http://blog.csdn.net/a345017062/article/details/6130261,也加上了自己的理解,感谢android老码农~~)

LatinIME输入法的一些总结相关推荐

  1. amlogic平台,给LatinIME输入法添加语言

    amlogic平台,给LatinIME输入法添加语言 1.frameworks\base\packages\SettingsProvider\res\values\defaults.xml 添加 &l ...

  2. LatinIME输入法分析

    输入法的设置在res/xml/method.xml的<input-method>标签中,主要设置两个属性: android:settingsActivity,输入法的设置程序入口. and ...

  3. Android AOSP LatinIME输入法自定义图片按钮

    文章目录 前言 一.引进图片按钮 二.添加映射 三.attrs.xml 四.KeyboardIconsSet.java 五.Constants.java 六.KeyboardCodesSet.java ...

  4. latinime输入法研究

    研究了下http://download.csdn.net/download/joyfly2008/5628655这位兄弟的文档写的很详细 另外: 输入法的设置在res/xml/method.xml的& ...

  5. Android 输入法增加语言

    Android源码中默认的有三种输入法:英文,中文,日文.对应的工程代码路径为: <android_root>/packages/inputmethods/LatinIME/ <an ...

  6. Android 10 去掉系统默认谷歌输入法

    代码路径:build/make/target/product/automotive_product.mk 1.在automotive_product.mk文件中添加LatinIME 输入法 PRODU ...

  7. Android 平台开发一个输入法

    Android 1.5 新特色之一就是输入法框架(Input Method Framework,IMF),正是它的出现,才为诞生不带实体键盘的设备提供了可能.IMF设计用来支持不同的IME,包括了so ...

  8. Android TV定制输入法

    TV输入法原理 在Android Latin输入法的基础上进行改写,该输入法不支持中文,处理流程如图: 第一次启动输入法服务时,根据键盘布局文件创建软键盘view,分别是全字母软键盘.数字软键盘以及特 ...

  9. Android Automotive (二)系统架构

    Android Automotive (二)系统架构 前面简单介绍了一下Android Automotive 的架构,具体Android Automotive 在系统的每个层,都做了哪些东西,这里总结 ...

最新文章

  1. pandas使用set_table_attributes函数、display_html函数等在jupyter notebook中并排显示两个dataframe的内容(side by side)
  2. [学习笔记]03.字符串的扩展
  3. python PIL 生成照片墙
  4. 2017-07-02 前端日报
  5. 卷积神经网络语音识别_用于物体识别的3D卷积神经网络
  6. Linux搭建深度学习环境使用指南
  7. 容器编排技术 -- Kubernetes Labels 和 Selectors
  8. 录音喊话器的故障修理_小鸭圣吉奥滚筒进水后不洗故障维修
  9. 一文学会LCD12864显示中文、英文、反显
  10. 利用Bitvise SSH Client与proxifier实现SSH全局代理
  11. mysql_连接故障 Too many open files in system
  12. 安装ubuntu20.04,从格式化磁盘到搭建全栈开发环境
  13. Xcode 真机调试 ineligible Devices的解决方法
  14. win 10 读写EFI分区
  15. 工作经费的开支范围_经费开支范围
  16. COLA 2.0架构应用
  17. 基于MATLAB的小波阈值去噪
  18. 怎么用python画花瓣_使用Python画一朵美丽的玫瑰花
  19. Python之高阶函数(abs、map、reduce、filter、lambda匿名函数)
  20. zabbix proxy 的搭建流程【物理机】

热门文章

  1. python读取sql文件,批量操作数据库
  2. Oracle学习笔记_PL/SQL语句块
  3. 盛迈坤电商:店铺定位需要做好哪些
  4. 邮局选址问题c语言实验报告,邮局选址问题 (C语言代码)
  5. java PropertyDescriptor分析
  6. 我的个人知识管理工具一览及相关经验技巧
  7. java jco连接sap帐号权限设定,Java连接SAP的JCO调用RFC配置
  8. Dom解析与Sax解析的区别
  9. 5/21 周六_习惯累积沉淀_新浪博客
  10. flink mysql sink_聊聊flink的sink