Android 系统源码修改键盘的默认主题样式

需求: 设置键盘默认主题为Holo Blue, 并且在设置中的 -> 语言和输入法中 -> 虚拟键盘 -> AOSP -> 布局中 -》 主题(Theme) 默认选中 Holo Blue;

该需求基于: Android 7.0系统,MTK 平台;

1. 定位源码文件位置:

/packages/inputmethods/LatinIME/java/src/com/android/inputmethod/keyboard/

锁定主要的实现类:
KeyboardTheme.java

该类中定义了字段: DEFAULT_THEME_ID 根据log 查看 id为 THEME_ID_KLP 字段就是 R.style.KeyboardTheme_KLP 就是系统初始化默认的键盘主题样式;

THEME_ID_ICS 就是需求要更改的主题;

在该类中的 getDefaultKeyboardTheme 中返回了默认的主题样式, 仅仅修改DEFAULT_THEME_ID 变量是不行的;

不废话直接上代码和修改步骤:

A. 在 KeyboardTheme.java 文件类中 定义成员变量:

private static int defaultThemeIdIsSelected = 0

B. 在 getDefaultKeyboardTheme 方法中安装下面的代码进行修改,对比代码,- 号标识为原来的代码是取消的,+ 号是更改的代码

         for (final KeyboardTheme theme : availableThemeArray) {
-            if (sdkVersion >= theme.mMinApiVersion) {
+           // modify begin
+            if (sdkVersion >= theme.mMinApiVersion || DEFAULT_THEME_ID == THEME_ID_ICS && defaultThemeIdIsSelected == 0) {
+               defaultThemeIdIsSelected = 1;
+                saveKeyboardThemeId(THEME_ID_ICS,prefs);
+           // modify end
                 return theme;
             }
         }

这样设置键盘的默认主题就修改成功了

2. 更新设置中的 -> 语言和输入法中 -> 虚拟键盘 -> AOSP -> 布局中 -》 主题(Theme) 默认选中 Holo Blue;

代码路径:
/packages/inputmethods/LatinIME/java/src/com/android/inputmethod/latin/settings/
在该类中更新代码
ThemeSettingsFragment.java

这里更新键盘的方式比较暴力, 根据KeyboardTheme 主题样式默认为 THEME_ID_ICS 其值是0; ,所以在 ThemeSettingsFragment 类中的 onCreate 方法中直接修改默认选中的值即可实现;

A. 在ThemeSettingsFragment 类中 定义成员静态变量:

+    private static int defaultThemeId = 0;

在 onCreate 方法中安装下面的代码进行修改,

         final KeyboardTheme keyboardTheme = KeyboardTheme.getKeyboardTheme(context);
-        mSelectedThemeId = keyboardTheme.mThemeId;
+        
+        //modify begin
+        if (defaultThemeId == 0) {
+            mSelectedThemeId = 0;
+            defaultThemeId = 1;
+        }else {
+            mSelectedThemeId = keyboardTheme.mThemeId;
+        }
+        //modify end
+        
     }

由于是设置默认的,只需执行一次设置就可以,而设置键盘默认主题参数已经被保存到了 SharedPreferences 中了;

源码学习探索中,思虑不周,如有更好的代码实现,欢迎评论;

  • 2
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 9
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 9
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值