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

前言

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-style
        latin: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

 <Key
            latin: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;

在这里插入图片描述

发布了21 篇原创文章 · 获赞 1 · 访问量 879

猜你喜欢

转载自blog.csdn.net/qq_33401954/article/details/103066611
今日推荐