Latin是android输入法框架一个InputMethodService实现类,类整体还是很简单的,执行过程已经android封装的接口限定好了。

之前移植输入法到电视上面,核心修改就是修改onKeyDown()和onLongPress()。android框架决定,所有键值都会先分发到输入法中,所以就可以通过记录界面的当前状态,结合键值,做出

一个假焦点的效果,达到移植的目的。


模板方法&&工具类

private final TreeSet<Long> mCurrentlyPressedHardwareKeys = CollectionUtils.newTreeSet();

public static <E> TreeSet<E> newTreeSet() {return new TreeSet<E>();}

    工具类CollectionUtils中对newTreeSet()的实现

很简单,使代码看上去很优雅。不会见到很长的new xxx();

对于模板地使用,还有很多,接着又有一处

public class StaticInnerHandlerWrapper<T> extends Handler

public static final class UIHandler extends StaticInnerHandlerWrapper<LatinIME>

有很多地方都用到了handle这个结构,这里通过类模板,使整体看上去很规范。

模板,顾名思义就是可以定义一个类型,这个类型有很多共性,这个共性看起来就是代码结构差不多。比如加法、减法、乘法,都是两个数做运算就可以使用模板

来定义,除法有点不一样,需要对除数做非零验证。

转载于:https://www.cnblogs.com/mltx/articles/5388062.html

LatinIME学习-Latin相关推荐

  1. LatinIME学习——Manifest篇

    前言: 接触这个工程是因为,需要把这个输入法移植到智能电视机上面.移植到电视机上面主要要解决的问题就是支持遥控器的操作. 在修改的过程中,觉得这是一个很标准的android工程,里面也有一些比较新奇的 ...

  2. LatinIME输入法分析

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

  3. LatinIME输入法的一些总结

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

  4. latinime输入法研究

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

  5. 102页PPT,DeepMind强化学习最新进展,含图文、公式和代码

    来源:专知 本文多图,建议阅读9分钟 本文提供涵盖了强化学习RL基础概念.策略梯度.动态规划以及D4PG.R2D3等RL算法的资源. [ 导读 ]在DeepMing任职的Nando de Freita ...

  6. DeepMind Nando(原牛津大学教授)强化学习最新进展,含图文、公式和代码,附102页PPT下载...

    点击上方"AI遇见机器学习",选择"星标"公众号 重磅干货,第一时间送 转自:专知 [导读]在DeepMing任职的Nando de Freitas(原牛津大学 ...

  7. 大数据入门级学习路线

    一.学习技能 1.1 必备技能(10项) 01. Java高级(虚拟机.并发) 02. Linux操作 03. Hadoop V2.0 (分布式存储系统HDFS[redundant reliable ...

  8. InnoDB MySQL 全文索引 学习笔记

    最近在学习MySQL全文索引的知识,基本搞清了功能以及使用方式,整理了相关资料分享出来一起学习进步哈 目录 1. 倒排索引 2. InnoDB全文检索 3. MySQL全文检索 3.1 Natural ...

  9. 深度学习数学基础(一)~卷积

    前言 我在学习机器学习和图像处理的过程中经常会遇到卷积这个概念,但我每次遇到这个概念都有点不甚了解.于是我在学习了几个博客之后把我理解的做了一个总结,其不足之处敬请指正. 一.卷积的起源 文献来源:- ...

最新文章

  1. centos 调整home分区xfs_centos 7.4 磁盘空间不足,扩容根分区 --lvm模式
  2. 交叉熵损失函数公式_交叉熵损失函数对其参数求导
  3. C# DirectX 开发2 - 定义一个矩阵和赋值
  4. app 崩溃测试 (转:CSDN 我去热饭)
  5. 自动化测试===adb 解锁手机的思路
  6. android触摸消息的派发过程
  7. SNF软件开发机器人-子系统-导出-导入功能-多人合作时这个功能经常用到
  8. 解决springBoot 的templates中html引入css文件失败
  9. Java私有方法运用场景_java6-3 封装和private关键字
  10. java 消费者 生产者 队列_用Java写一个生产者-消费者队列
  11. 金古桥机器人_泽塔奥特曼上演“吃瘪预定”,金古桥强势回顾,阿尔法被骑着打脸...
  12. requests的response.text 与 response.content
  13. php 类 private,有关php类的private属性继承问题详解
  14. php 去掉后导字符,PHP去除字符串最后一个字符的三种方法实例
  15. 电脑经常死机是什么原因
  16. 分治法:快排划分法(单向扫描法)
  17. 亚马逊AWS营收1700亿,阿里云213亿,差距巨大能追赶吗?...
  18. Steam游戏上架五:U3D连接Steamworks SDK制作成就系统
  19. 计算机网络(自我学习)
  20. spring cloud 总结(摘抄版)

热门文章

  1. Stripe支付相关资料
  2. html如何获取滚动条,js如何来实现获取滚动条宽度(代码示例)
  3. 【大学数据库考试题】数据库试题
  4. Ubuntu 18.04 LTS 永久路由配置指导
  5. nt和win2k源码模块位置
  6. windows下彻底关闭nginx服务
  7. 我的web前端工作日记11------在腾讯外包的这一年
  8. pcDuino-V2操作系统的安装-ubuntu/Android
  9. tiktok批量剪辑,ai混剪,画中画功能介绍
  10. Winform Chart网格线设置为虚线