当前位置:网站首页>HarmonyOS - 基于ArkUI (JS) 实现图片旋转验证
HarmonyOS - 基于ArkUI (JS) 实现图片旋转验证
2022-08-09 16:57:00 【51CTO】
作者:王少丽
前言
通过学习其他人的slider滑块组件衍生出的小组件, 本文主要结合HarmonyOS官网上的相关组件以及通用API,来实现一个图片的旋转验证 – 需拖动滑块将图片旋转还原为正确,方可验证通过。
效果演示

实现原理
触发条件
基于HarmonyOS通用事件touchstart和touchmove,touchend,通过手指刚触摸屏幕时触发、手指触摸屏幕后移动时触发事件,手指触摸屏幕后结束时触发事件;
实现slider滑块效果
通过touches触摸事件的属性集合,返回屏幕触摸点的信息数组,拿到localX距离被触摸组件左上角横向距离,动态计算出子元素的宽度来实现slider滑块效果。
实现图片旋转效果
初始化随机生成360°以内的角度,设置图片原点,360°除以100就得到圆的步长比上滑动距离除滑块总长度,最后加上图片原点就等于旋转后的角度。
使用到的官方API
通用方法
getBoundingClientRect()
获取元素的大小及其相对于窗口的位置。
| 属性 | 类型 | 描述 |
|---|---|---|
| width | number | 该元素的宽度。 |
| height | number | 该元素的高度。 |
| left | number | 该元素左边界距离窗口的偏移。 |
| top | number | 该元素上边界距离窗口的偏移。 |
通用事件
| 名称 | 参数 | 描述 | 是否支持冒泡 |
|---|---|---|---|
| touchstart | TouchEvent | 手指刚触摸屏幕时触发该事件。 | 是5+ |
| touchmove | TouchEvent | 手指触摸屏幕后移动时触发该事件。 | 是5+ |
| touchend | TouchEvent | 手指触摸屏幕后结束时触发该事件。 | 是5+ |
| 属性 | 类型 | 说明 |
|---|---|---|
| touches | Array<TouchInfo> | 触摸事件时的属性集合,包含屏幕触摸点的信息数组。 |
| 属性 | 类型 | 说明 |
|---|---|---|
| globalX | number | 距离屏幕左上角(不包括状态栏)横向距离。屏幕的左上角为原点。 |
| globalY | number | 距离屏幕左上角(不包括状态栏)纵向距离。屏幕的左上角为原点。 |
| localX | number | 距离被触摸组件左上角横向距离。组件的左上角为原点。 |
| localY | number | 距离被触摸组件左上角纵向距离。组件的左上角为原点。 |
实现过程
1. htm部分
2. css部分
3. js部分
总结
这篇文章是我通过对slider滑块的一个延伸练习,也算是一个比较常用的组件,后续部分功能还需完善,比如在样式、功能及代码优化方面等等,还有很多不足之处,大家有想法的可以提出来,我们一起学习,共同进步!
更多原创内容请关注: 中软国际 HarmonyOS 技术团队
入门到精通、技巧到案例,系统化分享HarmonyOS开发技术,欢迎投稿和订阅,让我们一起携手前行共建鸿蒙生态。
边栏推荐
猜你喜欢
随机推荐
[Pycharm easy to use function]
动态RDLC报表(四)
EPIC是什么平台?
方舟:生存进化开服务器端口映射教程
手写flexible.js的原理实现,我终于明白移动端多端适配
如何在 PC 机上测试移动端的网页?
What are some good open source automation testing frameworks to recommend?
win10 uwp 绑定静态属性
低代码平台和专业开发人员——完美搭档?
动手学深度学习_全卷积网络 FCN
测试开发是什么,为什么现在这么吃香?
太细了!阿里大佬耗时39天整理出一份Redis进阶笔记,满满的干货
openEuler Xiong Wei: How do you view the SIG organization model in the open source community?
Axure实现表格带滚动条
谭中意:你知道 “开源女王” 是谁吗?
逻辑越权和水平垂直越权支付篡改,验证码绕过,接口
动态RDLC报表(三)
体验远超Hue,这才是技术人员最喜欢的SQL工具
基于ABP和Magicodes实现Excel导出操作
JVM内存模型和结构详解(五大模型图解)









