研究了下http://download.csdn.net/download/joyfly2008/5628655这位兄弟的文档写的很详细

另外:

输入法的设置在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输入法研究相关推荐

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

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

  2. 基于文本服务框架的拼音输入法研究与实现

    摘要:目前的输入法大多采用输入法管理器-输入法编辑器(IMM-IME)进行开发,对于微软发布的新型输入法技术―文本服务框架(TSF)的研究一直比较滞后,该文论述了 TSF 的基本构成.主要接口.输入法 ...

  3. LatinIME输入法分析

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

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

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

  5. LatinIME输入法的一些总结

    1.关于输入法的一些设置重要文件 res/xml/method.xml 在该文件中在前面的博客http://blog.csdn.net/holdrise/article/details/8792294 ...

  6. 笔画输入法电脑版_太有才!浙江路政员发明汉字码输入法

    日前,新昌县路政员王治阳终于拿到了发明名称为"首笔音素字母注音输入法"的发明专利证书.这项发明是在他10年前的原始性发明--汉字码输入法基础上的再创新改进,为汉字输入注入了高效的& ...

  7. Android 输入法增加语言

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

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

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

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

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

最新文章

  1. (完全解决)Precision and F-score are ill-defined for being 0.0 in labels with no predicted samples.
  2. php后台守护进程+进程信号处理
  3. 中缀转后缀表达式并求值
  4. mysql日志是什么格式_Mysql日志的三种格式
  5. 10.ASCII码对照
  6. JavaSE 基础面试题
  7. 强化学习-动态规划_强化学习-第5部分
  8. Python单例模式的4种实现方法
  9. stl swap函数_vector :: swap()函数以及C ++ STL中的示例
  10. ARM uboot中的.lds
  11. Hyperreal number
  12. fragment中文网_Android使用Fragment打造万能页面切换框架
  13. java轮播图_RxJava 实现ViewPager的轮播图
  14. HIVE学习之(三)
  15. ecshop mysql 操作_ecshop数据库操作函数
  16. 视觉的目的是什么?从监督学习到对比学习,回顾CV发展史
  17. 最全Airtest接口功能介绍和示例总结,新手同学千万不能错过呀!(一)
  18. Python抓取某东电商平台数据
  19. 外观模式 Facade
  20. mysqlin会使用索引吗

热门文章

  1. 超级计算机作文650字,作文650字|650字作文大全-查字典作文网
  2. Flink Forward Asia 2020干货总结!
  3. C语言小项目之猜数字
  4. hdu 4389 囧,打表
  5. 菜鸟程序员Java系列
  6. OSPF 路由汇总配置
  7. 我的 40 篇精选原创文章
  8. 互贷新规·助贷涅槃·解析与展望
  9. 小睿云电脑与桌面云的区别
  10. Python-数据处理:iloc和loc的用法