当前位置:网站首页>#夏日挑战赛#OpenHarmony 给你的输入法加点彩—星球崛起
#夏日挑战赛#OpenHarmony 给你的输入法加点彩—星球崛起
2022-08-04 11:47:00 【51CTO】
背景
基于RK3568开发板,连接大屏(1920X1200),在使用输入法时出现如下情况:
没错,输入法的最后一排安装被虚拟按键栏给遮挡了,这导致输入法无法进行数字字符切换,最大的影响是在分布式ping码认证的时候,因为没办法切换数字按键,无法输入ping码,这样分布式就不能开心的玩了,坑~~~
怎么办?
效果
我们先看下修改后的输入法
视频地址
实践
首先我们先说明下环境
- 设备:DAYU200【RK3568】+大屏【1920X1200】
- 系统:OpenHarmony 3.2 Beat1
- SDK:9
- IDE:DevEco Studio 3.0 Beta4,Build Version: 3.0.0.992, built on July 14, 2022
先逛下gitter上OpenHarmony 输入法相关的资料
最后在系统设置->应用->应用管理查看下输入法的踪迹: kikaInput
从官方文档中介绍我们知道
样式布局:pages/service/pages/index.ets文件进行布局修改。
业务逻辑:model/KeyboardController.ets文件进行逻辑修改。
从一开始的问题上看应该是布局问题,所以先查看index.ets。以下截取部分代码,有兴趣可以下载官方demo查看。
index.ets
布局很简单,就是一个下拉菜单栏,另外一个根据菜单类型显示不同的键盘容器,菜单类型包括:字母、数字、符号。键盘上的布局具体实现可以查看pages/service/pages/index.ets中的接口:
- keyMenu()
- numberMenu()
- symbolMenu()
下面以keyMenu()为例进行说明
1、字符软键盘包括四行,每一个最外层的容器为:Flex
2、pressedStyles、normalStyles 用于控制虚拟键盘两种状态下的背景颜色:常态、点击态;
3、keyItemNumber 用于控制每个键盘样式,包括按键的背景、文本、字体颜色、尺寸、点击相应事件;
4、切换字符的大小写时通过设置Image内容替换不同标志:Image($rawfile(this.upper === 1 ? ‘new_shift_light.svg’ : this.upper ===
2 ? ‘new_shift_light_long.svg’ : ‘new_shift.svg’))
5、从设置容器的尺寸上看,全部都在inputStyle中进行设置
StyleConfiguration
1、设置容器尺寸主要有两种:1、设备类型;2、屏幕宽度、高度(横竖屏?)
2、尺寸的具体数值可以查看resource/base/element/float.json或resource/phone/element/float.json
所以如果想要解决前面提到的问题:软键盘按键被虚拟按键栏遮挡,则可以通过修改每个按键的尺寸达到目的,有没有其他的方式呢?
是的,还有一种方式就是修改软键盘弹窗显示的位置和弹窗的高度,让弹窗的位置显示在虚拟按键之上也可以达到目的,具体怎么实现呢?这我们就需要看逻辑控制类:KeyboardController
KeyboardController
由于代码比较多,下面只截取控制弹窗显示的部分代码
1、import display from ‘@ohos.display’: display,屏幕属性,提供管理显示设备的一些基础能力;
2、默认设置软键盘弹窗的高度系数为:keyHeightRate = 0.43,即弹窗高度等于:屏幕总高的43%;
3、默认导航栏的高度:navigationbar_height = 75,即 75px
4、弹窗显示的位置barPosition = dHeight - keyHeight - navigationbar_height,即弹窗的y轴位置=屏幕高度-软键盘高度-导航栏高度;
5、最后通过win.moveTo(0, this.barPosition)设置完成;
所以如果需要修改弹窗的显示,可以控制弹窗的高度或者显示位置来完成。
编译与安装
编译
如果直接下载官方demo在IDE上使用自动签名方式完成签名后run会提示:Failed due to grant request permissions failed
这个问题是因为应用申请了ohos.permission.GET_BUNDLE_INFO_PRIVILEGED 权限,此权限等级为:system_basic,所以无法安装。
解决方案: OpenHarmony 应用安装报权限错误
安装
卸载
因为有签名问题,所以如果你没有系统签名的话,建议你先卸载
安装
安装应用我的做法是通过bm命令执行安装
步骤1、将签名安装包推送到系统/data 目录
步骤2、使用bm安装
看到提示安装成功即可
备注:如果你看到安装成功后,点击输入框没有弹出软键盘,建议你重启设备。
系统应用安装包
输入法系统应用安装包的位置:system/app/com.example.kikakeyboard/kikaInput.hap,你可以将需要替换的安装包修改报名为:kikaInput.hap,覆盖替换系统安装包。
我们指导的弹窗的设置,布局的控制,想要换成自定义的皮肤就非常容易了,你可以下载官方demo试试吧。
问题与思考
1、kikaInput中弹窗的显示位置目前只有三种,默认、屏幕像素1080x2376、2376x1080,最近也看到还有一种屏幕像素2560x1600,都是针对具体屏幕进行的一种适配,比较局限,是否有一些通用的适配方式。
2、软键盘按键的尺寸目前设置也比较局限,希望可以有一些通用的适配方式。
感谢
如果您能看到最后,还希望您能动动手指点个赞,一个人能走多远关键在于与谁同行,我用跨越山海的一路相伴,希望得到您的点赞。
边栏推荐
- 【HMS core】【FAQ】Account Kit、MDM能力、push Kit典型问题合集6
- 小程序实战(三) - head组件的封装与使用
- 200PLC转以太网与研华webaccess modbusTCP客户端在空调机上应用配置案例
- 244页pdf!《2022 中国云计算生态蓝皮书》发布
- 微信公众号之底部菜单
- 光盘刻录步骤
- JS逆向字体反爬,某供应商平台反爬实践
- UMA & Hong Kong Polytechnic & Ali propose SP-ViT to learn 2D space prior knowledge for visual Transformer!
- 涨姿势了!原来这才是多线程正确实现方式
- ping的原理
猜你喜欢
随机推荐
【黄啊码】MySQL入门—1、SQL 的执行流程
【Qt】解决 “由于找不到Qt5Cored.dll,无法继续执行代码”(亲测有效)
ESP8266-Arduino编程实例-TSL2561亮度传感器驱动
如何过一个充满科技感的七夕?华为告诉你
Transferring Rich Feature Hierarchies for Robust
面试蚂蚁(P7)竟被MySQL难倒,奋发图强后二次面试入职蚂蚁金服
Leetcode刷题——二叉搜索树相关题目(98. 验证二叉搜索树、235. 二叉搜索树的最近公共祖先、1038. 从二叉搜索树到更大和树、538. 把二叉搜索树转换为累加树)
涨姿势了!原来这才是多线程正确实现方式
DDL和DML的补充
知乎数据分析训练营
中电金信技术实践|分布式事务简说
AI 助力双碳目标:让每一度电都是我们优化的
Xilinx VIVADO 中 DDR3(Naive)的使用(3)仿真测试
backbone核心详解系列——RepVGG
如何做好企业数字化转型?这10份靠谱案例收藏了(附下载)
【RISC-V】Trap和Exception
【目标检测】YOLOv4特征提取网络——CSPDarkNet53结构解析及PyTorch实现
*iframe*
MTBF是什么意思?交换机做MTBF有什么要求?MTTF、MTBF和MTTR的区别是什么?
使用json-server快速搭建本地数据接口