当前位置:网站首页>#夏日挑战赛#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、软键盘按键的尺寸目前设置也比较局限,希望可以有一些通用的适配方式。
感谢
如果您能看到最后,还希望您能动动手指点个赞,一个人能走多远关键在于与谁同行,我用跨越山海的一路相伴,希望得到您的点赞。
边栏推荐
- 数据库表列类型;DML_添加数据;DDL_修改,删除数据库表
- 微信服务号调用API实现微信报警
- The sword refers to the Great Wall Cannon?Official spy photos of Changan's new pickup
- 国际原子能机构总干事警告称扎波罗热核电站安全形势已“完全失控”
- 123
- 手搓一个“七夕限定”,用3D Engine 5分钟实现烟花绽放效果
- 抗积分饱和PID控制器
- 基于BiLSTM的回归预测方法
- 超美星空特效,你Get了吗?
- Leetcode brush - structure binary tree (105. Once upon a time sequence and the sequence structure binary tree traversal sequence, 106. From the sequence with the sequence structure binary tree travers
猜你喜欢
面试蚂蚁(P7)竟被MySQL难倒,奋发图强后二次面试入职蚂蚁金服
Redis (1) installation and configuration
MySql数据库入门的基本操作
Based on the BiLSTM regression forecast method
The sword refers to the Great Wall Cannon?Official spy photos of Changan's new pickup
【黄啊码】MySQL入门—1、SQL 的执行流程
JS逆向字体反爬,某供应商平台反爬实践
ESP8266-Arduino编程实例-MQ3酒精传感器驱动
【目标检测】yolov3特征提取网络------Darknet53网络及pytorch实现
COVID-CT新冠肺炎检测(DenseNet网络)
随机推荐
【目标检测】YOLOv4特征提取网络——CSPDarkNet53结构解析及PyTorch实现
asp.net解决大文件断点续传
Transferring Rich Feature Hierarchies for Robust
Xilinx VIVADO 中 DDR3(Naive)的使用(2)读写设计
【综合笔试题】难度 4.5/5,超超超经典数学运用题
知乎数据分析训练营
傅里叶级数与傅里叶变换学习
节流函数(每隔一段时间就会执行一次)
systemdd-dev病毒杀
使用json-server快速搭建本地数据接口
上帝空间——全球首个基于Web3.0的艺术协议创意平台,拓宽多元艺术融合边界
数据库对象-视图;存储过程
*W3C* 标准组织
小程序实战(一)- 骨架屏的应用与实现
Redis(一)安装与配置
关于架构的思考
国际原子能机构总干事警告称扎波罗热核电站安全形势已“完全失控”
萌宠来袭,如何让“吸猫撸狗”更有保障?
AI 助力双碳目标:让每一度电都是我们优化的
Rust 从入门到精通04-变量