当前位置: 首页 > article >正文

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

文章目录

  • 前言
  • 一、引进图片按钮
  • 二、添加映射
  • 三、attrs.xml
  • 四、KeyboardIconsSet.java
  • 五、Constants.java
  • 六、KeyboardCodesSet.java
  • 七、key_styles_common.xml
  • 八、KeyboardState.java
  • 九、使用自定义按钮
  • 十、编译并把apk push到手机测试
  • 十一、番外

前言

LatinIME是Android AOSP中的一个开源输入法项目,利用该输入法可以完成多个国外语言的切换和输入,非常方便。本文就是实现在这个项目的基础上添加一个自定义按键,完成自己需要的功能。

一、引进图片按钮

准备三个图片

其实这三个图片就是从
LatinIME\java\res\drawable-hdpi
在这里插入图片描述
这个目录里拿出来的,我没有设计自己的icon,所以直接拿原先存在的icon来作为测试。
然后就把这三个图片放进drawable-hdpi这个目录中。

二、添加映射

从这三个文件中
LatinIME\java\res\values\keyboard-icons-holo.xml
LatinIME\java\res\values\keyboard-icons-lxx-dark.xml
LatinIME\java\res\values\keyboard-icons-lxx-light.xml
分别添加

<item name="iconTestKey">@drawable/sym_keyboard_shift_holo_dark</item>
<item name="iconTestKey">@drawable/sym_keyboard_shift_lxx_dark</item>
<item name="iconTestKey">@drawable/sym_keyboard_shift_lxx_light</item>

在这里插入图片描述
三个添加的方式都是一样的,但是添加的图标是不一样的。

三、attrs.xml

添加自定义的映射
LatinIME\java\res\values\attrs.xml

   <attr name="iconTestKey" format="reference" />

在这里插入图片描述

四、KeyboardIconsSet.java

LatinIME\java\src\com\android\inputmethod\keyboard\internal\KeyboardIconsSet.java

 public static final String NAME_TEST_KEY = "test_key";NAME_TEST_KEY,            R.styleable.Keyboard_iconTestKey,

在这里插入图片描述
在这里插入图片描述

五、Constants.java

LatinIME\common\src\com\android\inputmethod\latin\common\Constants.java

 public static final int CODE_TEST = -16;

在这里插入图片描述

case CODE_TEST: return "test";

在这里插入图片描述

六、KeyboardCodesSet.java

LatinIME\java\src\com\android\inputmethod\keyboard\internal\KeyboardCodesSet.java

 "key_test",

在这里插入图片描述

 Constants.CODE_TEST,

在这里插入图片描述

七、key_styles_common.xml

添加按钮属性
LatinIME\java\res\xml\key_styles_common.xml

 <key-stylelatin:styleName="toTestKeyStyle"latin:keySpec="!icon/test_key|!code/key_test"latin:keyActionFlags="isRepeatable|noKeyPreview"latin:backgroundType="functional"/>

在这里插入图片描述

八、KeyboardState.java

添加自定义按钮的点击事件
LatinIME\java\src\com\android\inputmethod\keyboard\internal\KeyboardState.java

 if (code != Constants.CODE_TEST) {Log.v("Test-lanjiabin","KeyboardState->onPressKey()->CODE_TEST");}

在这里插入图片描述

九、使用自定义按钮

在键盘中使用自定义按钮
把26键盘的最后一行的第一个按键设置为自定义按钮。我这里只是把原先的按键换成自己的按键而已。
LatinIME\java\res\xml\row_qwerty4.xml

 <Keylatin:keyStyle="toTestKeyStyle"latin:keyWidth="15%p" />

在这里插入图片描述

十、编译并把apk push到手机测试

编译并push按照自己的方法,在android源码中编译并push到自己手机。
效果图,其中圈起来的,就是自定义按钮,因为用的是上面大小写切换的icon,所以这两个长得一样。但是功能不一样。
在这里插入图片描述
点一下这个按钮,然后就是测试日志:
在这里插入图片描述
对比点击事件的代码:
在这里插入图片描述
没错,到这里,我们自定义的按钮还有点击事件,成功了。

十一、番外

LatinIME\java\src\com\android\inputmethod\latin\inputlogic\InputLogic.java

 case Constants.CODE_TEST:Log.v("Test_lanjiabin","InputLogic->handleFunctionalEvent->CODE_TEST");break;

在这里插入图片描述

http://www.lryc.cn/news/2416553.html

相关文章:

  • ExitProcess,TerminateProcess,CreateToolhelp32Snapshot,Process32First,Process32Next,OpenProcess
  • windows进程 windows多进程编程
  • JavaScript之表单验证
  • 从零开始了解《间之楔动漫》:带你领略这部作品的独特魅力!
  • 光盘加密大师轻松为光盘加密
  • 一个简单的TODO,原来这么好用
  • a标签href属性的用法
  • #python学习笔记(五)#循环语句
  • 微信小程序毕业设计-网上商城系统项目开发实例(附源码+演示视频+LW)
  • 怎么使用bootstrap
  • 微软官方原版win7(64位/32位)旗舰版系统下载【适合所有品牌】
  • NVIDIA Jetson TX1(3)
  • 参考文献类型标识码--中英文对照
  • 虚拟机常规使用及网络配置
  • AppSettings和ConnectionStrings的使用。
  • 十大监控电脑桌面的软件,电脑监控软件就它了
  • history对象,当前url添加参数且不刷新页面
  • 实例方法、类方法、静态方法的区别
  • CString中Left,Right,ReverseFind 用法
  • LINUX防火墙Firewall常用命令(非常详细)零基础入门到精通,收藏这一篇就够了
  • FTP服务器管理软件Serv-U的安装方法(服务器端)
  • 【Linux学习笔记】Linux镜像的下载与获取
  • CSS基础-07-盒子模型和轮廓(外边距 margin,边框border,内边距 padding,轮廓 outline)
  • 天尚网DotA专题站公测版隆重上线
  • 关于SetCapture() 和 ReleaseCapture()的用法
  • 计算机专业自学网站大全,零基础入门到精通
  • oracle11实战详解
  • ERROR : Failed with exception Wrong file format. Please check the file‘s format.
  • Linux操作系统的安装
  • 软件工程专业值得考的8个证书