鸿蒙5.0进阶开发:输入法子类型开发

花瓣小跑  金牌会员 | 2025-2-20 03:48:28 | 来自手机 | 显示全部楼层 | 阅读模式
打印 上一主题 下一主题

主题 969|帖子 969|积分 2907

 往期鸿蒙5.0全套实战文章必看:(文中附带鸿蒙5.0全栈学习资料)



  • 鸿蒙开发焦点知识点,看这篇文章就够了
  • 最新版!鸿蒙HarmonyOS Next应用开发实战学习路线
  • 鸿蒙HarmonyOS NEXT开发技能最全学习路线指南
  • 鸿蒙应用开发实战项目,看这一篇文章就够了(部分项目附源码)

输入法子类型开发

输入法子类型允许输入法展现差别的输入模式或语言,用户可以根据需要在差别模式和语言中切换。如:输入法的中文键盘、英文键盘等都属于输入法的子类型。
输入法子类型的配置与实现


  • 输入法应用开发者只需要注册实现一个InputMethodExtensionAbility,所有的输入法子类型共用该InputMethodExtensionAbility,在module.json5配置文件中添加metadata,name为ohos_extension.input_method,用于配置所有子类型的资源信息。
    1. {
    2.   "module": {
    3.     // ...
    4.     "extensionAbilities": [
    5.       {
    6.         "description": "InputMethodExtDemo",
    7.         "icon": "$media:icon",
    8.         "name": "InputMethodExtAbility",
    9.         "srcEntry": "./ets/InputMethodExtensionAbility/InputMethodService.ts",
    10.         "type": "inputMethod",
    11.         "exported": true,
    12.         "metadata": [
    13.           {
    14.             "name": "ohos.extension.input_method",
    15.             "resource": "$profile:input_method_config"
    16.           }
    17.         ]
    18.       }
    19.     ]
    20.   }
    21. }
    复制代码
  • 子类型配置文件格式如下,字段释义参照InputMethodSubtype,开发者需要严酷按照配置文件格式及字段进行子类型信息配置, locale字段的配置参照BCP 47。
    1. {
    2.   "subtypes": [
    3.     {
    4.       "icon": "$media:icon",
    5.       "id": "InputMethodExtAbility",
    6.       "label": "$string:english",
    7.       "locale": "en-US",
    8.       "mode": "lower"
    9.     },
    10.     {
    11.       "icon": "$media:icon",
    12.       "id": "InputMethodExtAbility1",
    13.       "label": "$string:chinese",
    14.       "locale": "zh-CN",
    15.       "mode": "lower"
    16.     }
    17.   ]
    18. }
    复制代码
  • 输入法应用中监听子类型事件,根据差别的子类型,可以加载差别的软键盘界面,大概使用状态变量控制界面中的软键盘表现。
    1. import { InputMethodSubtype, inputMethodEngine } from '@kit.IMEKit';
    2. let panel: inputMethodEngine.Panel;
    3. let inputMethodAbility: inputMethodEngine.InputMethodAbility = inputMethodEngine.getInputMethodAbility();
    4. inputMethodAbility.on('setSubtype', (inputMethodSubtype: InputMethodSubtype) => {
    5.   let subType = inputMethodSubtype; // 保存当前输入法子类型, 此处也可以改变状态变量的值,布局中判断状态变量,不同的子类型显示不同的布局控件
    6.   if (inputMethodSubtype.id == 'InputMethodExtAbility') { // 根据不同的子类型,可以加载不同的软键盘界面
    7.     panel.setUiContent('pages/Index');
    8.   }
    9.   if (inputMethodSubtype.id == 'InputMethodExtAbility1') { // 根据不同的子类型,可以加载不同的软键盘界面
    10.     panel.setUiContent('pages/Index1');
    11.   }
    12. });
    复制代码
输入法子类型相干信息的获取


  • 开发者可以通过调用getCurrentInputMethodSubtype获取当前输入法应用的当前子类型。
  • 开发者可以通过调用listCurrentInputMethodSubtype获取当前输入法应用的所有子类型。
  • 开发者可以通过调用listInputMethodSubtype获取指定输入法应用的所有子类型。
输入法子类型的切换


  • 开发者可以通过调用switchCurrentInputMethodSubtype切换当前输入法应用的子类型。
  • 开发者可以通过调用switchCurrentInputMethodAndSubtype切换至指定输入法应用的指定子类型。


免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

x
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

花瓣小跑

金牌会员
这个人很懒什么都没写!
快速回复 返回顶部 返回列表