当前位置:网站首页>#夏日挑战赛#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、软键盘按键的尺寸目前设置也比较局限,希望可以有一些通用的适配方式。
感谢
如果您能看到最后,还希望您能动动手指点个赞,一个人能走多远关键在于与谁同行,我用跨越山海的一路相伴,希望得到您的点赞。
边栏推荐
- Xilinx VIVADO 中 DDR3(Naive)的使用(2)读写设计
- 【飞控开发高级教程7】疯壳·开源编队无人机-编队飞行
- 知乎数据分析训练营
- 职责链模式(responsibilitychain)
- 知道创宇EDR系统实力通过中国信通院端点检测与响应产品能力评测
- 200PLC转以太网与研华webaccess modbusTCP客户端在空调机上应用配置案例
- The use of DDR3 (Naive) in Xilinx VIVADO (1) to create an IP core
- backbone核心详解系列——RepVGG
- vector中函数emplace_back的实现原理
- 【地平线旭日X3派试用体验】从开机到点灯(第一节)
猜你喜欢
*iframe*
COVID-CT新冠肺炎检测(DenseNet网络)
JS逆向字体反爬,某供应商平台反爬实践
The use of DDR3 (Naive) in Xilinx VIVADO (3) simulation test
微信公众号之底部菜单
深度学习------pytorch-gpu环境搭建
Leetcode刷题——543. 二叉树的直径、617. 合并二叉树(递归解决)
中电金信技术实践|分布式事务简说
The use of DDR3 (Naive) in Xilinx VIVADO (1) to create an IP core
Zikko上市同时搭载HDMI2.1和2.5GbE新款雷电4扩展坞
随机推荐
DDL和DML的补充
项目管理前景
基于BiLSTM的回归预测方法
HyperLynx仿真(一)LineSim简单介绍
傅里叶级数与傅里叶变换学习
力扣解法汇总1403-非递增顺序的最小子序列
国际原子能机构总干事警告称扎波罗热核电站安全形势已“完全失控”
中电金信技术实践|分布式事务简说
字节技术官亲码算法面试进阶神技太香了
什么是 DevOps?看这一篇就够了!
活动报名:如何高效应对当下的实时场景需求?
监督和半监督学习下的多标签分类综述
超美星空特效,你Get了吗?
表的完整性约束;非外键约束
IBM Q复制启动停止查看状态
数据库对象
Zikko上市同时搭载HDMI2.1和2.5GbE新款雷电4扩展坞
BOSS直聘回应女大学生连遭两次性骚扰:高度重视求职者安全 可通过App等举报
上帝空间——全球首个基于Web3.0的艺术协议创意平台,拓宽多元艺术融合边界
微信服务号调用API实现微信报警