当前位置:网站首页>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开发技术,欢迎投稿和订阅,让我们一起携手前行共建鸿蒙生态。
边栏推荐
猜你喜欢
怎样选择一个好的SaaS知识库工具?
手写flexible.js的原理实现,我终于明白移动端多端适配
The strongest distributed lock tool: Redisson
动态RDLC报表(一)
Account opening requirements and exemptions for special futures such as crude oil
太细了!阿里大佬耗时39天整理出一份Redis进阶笔记,满满的干货
【燃】是时候展现真正的实力了!一文看懂2022华为开发者大赛技术亮点
A carnival of art and technology, cloud XR supports Anaya 2022 Sandbox Immersive Art Season
ABP详细教程——模块类
Redis的那些事:一文入门Redis的基础操作
随机推荐
MASA Stack 第三期社区例会
最新!2022版新员工基础安全知识教育培训PPT,企业拿去直接用
华为云全流程护航《流浪方舟》破竹首发,打造口碑爆款
In-depth understanding of MySQL common data types and data type selection optimization
EPIC是什么平台?
谭中意:你知道 “开源女王” 是谁吗?
体验远超Hue,这才是技术人员最喜欢的SQL工具
crm系统哪家好?好用的crm管理系统推荐
LINE Verda Programming Contest (AtCoder Beginner Contest 263) A~E 题解
进行知识管理的好处有哪些?
AI基础环境搭建和设置总文
有什么好的开源自动化测试框架可以推荐?
动手学深度学习_风格迁移
学长告诉我,大厂MySQL都是通过SSH连接的
win10 uwp 无法附加到CoreCLR
One-key login principle of local number
[SUCTF 2019]CheckIn
Entry node of ring in leetcode/linked list
在 .NET MAUI 中如何更好地自定义控件
【.NET 6】开发minimal api以及依赖注入的实现和代码演示