HarmonyOS鸿蒙Next中小艺输入法的键盘区域外显示的按键序列效果,普通输入法开发者能实现吗?

HarmonyOS鸿蒙Next中小艺输入法的键盘区域外显示的按键序列效果,普通输入法开发者能实现吗? 【问题描述】:小艺输入法的 键盘区域外显示的 按键序列 效果 普通输入法开发者能实现吗?

【问题现象】: cke_877.png

【版本信息】:不涉及

【复现代码】:不涉及

【尝试解决方案】:不涉及


更多关于HarmonyOS鸿蒙Next中小艺输入法的键盘区域外显示的按键序列效果,普通输入法开发者能实现吗?的实战教程也可以访问 https://www.itying.com/category-93-b0.html

5 回复

【解决方案】

  • HarmonyOS自定义输入法的候选词态面板显示需要设置PanelFlag的FLAG_CANDIDATE类型,详细说明请参考:PanelFlag
  • HarmonyOS自定义输入法的悬浮工具栏显示需要设置PanelType的STATUS_BAR类型,详细说明请参考:PanelType

完成上述面板类型的设定之后,为了使所配置的输入法面板能够正确显示,还需调用panel对象的show方法来展示当前的输入法界面。

更多关于HarmonyOS鸿蒙Next中小艺输入法的键盘区域外显示的按键序列效果,普通输入法开发者能实现吗?的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html


可以使用 IME Kit 输入法开发服务

  • IME Kit提供输入法框架和输入法服务两类API。用于实现输入法应用,也可以用于实现自绘编辑框以及实现对输入法应用的控制。
  • 【约束限制】

相关文档:【输入法开发服务】

相关示例:【自定义软键盘】

Stack(){
      Text("输入法组件")
        .id('HelloWorld')
        .fontSize($r('app.float.page_text_font_size'))
        .fontWeight(FontWeight.Bold)
        .width("100%")
        .onClick(() => {
          this.message = 'Welcome';
        })
        .backgroundColor(Color.Green)
      Text('上层文本')
        .position({x: 0, y: -20})
    }

这样层叠在组件上方,position给负数是可以出现这种效果的

鸿蒙Next中小艺输入法的键盘外按键序列效果,普通开发者无法直接实现。该效果依赖鸿蒙系统的特定底层框架和API,目前未向第三方开放相关接口权限。普通输入法只能基于公开的InputMethodService等标准接口开发,无法在系统级键盘区域外绘制或控制UI元素。

是的,普通输入法开发者可以实现类似小艺输入法在键盘区域外显示按键序列的效果。

HarmonyOS Next 为输入法应用提供了 InputMethodExtensionAbility 框架,其中包含 InputMethodEngineUIExtensionAbility 等关键能力。通过 UIExtensionAbility,开发者可以创建悬浮于系统应用之上的扩展窗口,这正是实现键盘区域外UI(如候选词条、按键序列提示等)的核心机制。

具体实现路径如下:

  1. 利用 UIExtensionAbility 创建扩展窗口:您需要开发一个 UIExtensionAbility 组件,用于承载并管理您希望在键盘上方或周边显示的UI内容(即按键序列视图)。该扩展窗口可以独立于主键盘UI进行布局和交互。
  2. 通过 InputMethodEngine 进行通信与控制:在您的输入法主服务(InputMethodExtensionAbility)中,通过 InputMethodEngine 获取输入上下文、管理输入状态,并将必要的按键事件、预编辑文本等信息,通过进程间通信(如使用 EventHubcaller 接口)传递给您创建的 UIExtensionAbility 扩展窗口。
  3. 在扩展窗口中渲染按键序列UIExtensionAbility 在接收到数据后,即可根据输入状态(如用户长按某个按键),在其独立的窗口内绘制并展示相应的按键序列(例如,字母键上的备选符号或数字)。
  4. 处理交互与输入提交:当用户在扩展窗口的按键序列中进行选择时,UIExtensionAbility 需要将此选择结果回传给主输入法服务,最终由主服务通过 InputMethodEnginecommitText 等方法提交到文本输入框。

技术要点

  • 关键在于合理设计 InputMethodExtensionAbility(主服务)与 UIExtensionAbility(扩展UI窗口)之间的数据通信与同步逻辑。
  • 扩展窗口的尺寸、位置需要精心计算,以确保其紧邻键盘相关区域显示,且不影响其他系统UI。
  • 此实现完全基于HarmonyOS Next公开的输入法开发框架与扩展能力API,未使用私有接口。

因此,只要遵循HarmonyOS Next的输入法开发规范,并合理运用 UIExtensionAbilityInputMethodEngine,第三方开发者完全有能力实现与小艺输入法同等的键盘外按键序列显示效果。

回到顶部