当前位置:网站首页>[Harmony OS] [ArkUI] ets development graphics and animation drawing
[Harmony OS] [ArkUI] ets development graphics and animation drawing
2022-08-03 04:41:00 【Huawei Developer Forum】
【ArkUI】ets开发 图形与动画绘制
前言:之前我们已经完成了Harmony ArkUI 使用ets方式实现基础的页面布局和数据连接的学习,这次我们在原有的基础上进行一些图片和动画的绘制学习.本篇是以HarmonyOS官网的基于TS扩展的声明式开发范式文档,绘图和动画为基础进行编写.所以笔者将原文进行整合,提取出其中的要点,以便通俗易懂地呈现给读者,希望能帮助你快速了解Harmony的ETS开发,学会简单的图形和动画绘制的学习.本篇最后会贴上参考原文链接.
首先讲一下大致的思路,我们要使用组件工具绘制基本的几何图形,绘制自定义几何图形,给图形添加动画效果,以及页面的转场动画.所以笔者将整个功能的实现分为了两个步骤,图形绘制和动画绘制,这与原篇大致相同.
1. 图形绘制.
在之前的学习中,我们已经建立的项目,页面布局已经完备,这次学习我们就在这基础上进行图形绘制.FoodDetail页面的食物成分表里,给每一项成分名称前都加上一个圆形的图标作为成分标签.
1) 绘制基本图形.创建Circle组件,在每一项含量成分前增加一个圆形图标作为标签.修改FoodDetail页面的ContentTable组件里的IngredientItem方法,在成分名称前添加Circle.每个成分的标签颜色不一样在build方法中,调用IngredientItem,给每个Circle填充不一样的颜色.
打开previewer或模拟器看一下效果
2) 绘制自定义图形.在pages文件夹下创建新的eTS页面Logo.ets.在Logo.ets中创建Logo Component,创建Flex组件为根节点,创建Shape组件为Flex子组件.给页面填充渐变色.设置为线性渐变,偏移角度为180deg,三段渐变 #BDE895 -->95DE7F --> #7AB967.
打开previewer或模拟器看一下效果
3) 绘制路线Path,设置其绘制命令.填充颜色为白色.
4) 在Shape组件内绘制第二个Path.第二条Path的背景色为渐变色.Path的绘制命令比较长,可以将其作为组件的成员变量,通过this调用.完成应用Logo的绘制.Shape组合了三个Path组件.
打开previewer或模拟器看一下效果
2. 动画绘制.
上一部分我们已经学习了普通图形和自定义图形的绘制,这一部分我们会在图形绘制的基础上给推行添加动画效果,让图形动起来,这就是动画绘制.
动画功能分为组件动画和页面间动画,在本节主要完成两个动画效果:Logo图标的渐出和放大效果与食物列表页和食物详情页的转场动画效果.
1) 闪屏动画.闪屏动画的预期效果是,进入Logo页面后,animateTo动画效果自动开始播放.调用Shape的onAppear方法,设置其显式动画.创建opacity和scale数值的成员变量,用装饰器@State修饰.表示其为有状态的数据,即改变会触发页面的刷新.
2) 设置animateTo的动画曲线curve.Logo的加速曲线为先慢后快,使用贝塞尔曲线cubicBezier,cubicBezier(0.4, 0, 1, 1).使用插值计算,首先要导入curves模块.
3) 设置动画时长为1s,延时0.1s开始播放,设置显示动效event的闭包函数,实现Logo的渐出和放大效果.闪屏动画播放结束后定格1s,进入FoodCategoryList页面.设置animateTo的onFinish回调接口,调用定时器Timer的setTimeout接口延时1s后,调用router.replace,显示FoodCategoryList页面.
打开previewer或模拟器看一下效果
4) 页面转场动画.食物分类列表页和食物详情页之间的共享元素转场,即点击FoodListItem/FoodGridItem后,食物缩略图会放大,随着页面跳转,到食物详情页的大图.引入curves模块.在FoodListItem的Image组件上设置autoResize为false,因为image组件默认会根据最终展示的区域,去调整图源的大小,以优化图片渲染性能.
5) 设置FoodDetail页面的FoodImageDisplay的Image组件的共享元素转场方法(sharedTransition).设置方法同上.
打开previewer或模拟器看一下效果
以上,本次的内容分享,谢谢!
参考原文链接:
https://developer.harmonyos.com/cn/docs/documentation/doc-guides/ui-ts-drawing-feature-0000001192705721
欲了解更多更全技术文章,欢迎访问:https://developer.huawei.com/consumer/cn/forum/topic/0201822056273660002?fid=0102683795438680754?ha_source=zzh |
边栏推荐
- 直播|StarRocks 技术内幕 :低基数全局字典优化
- 接口测试 Mock 实战(二) | 结合 jq 完成批量化的手工 Mock
- Shell条件语句判断
- Interface test practice | Detailed explanation of the difference between GET / POST requests
- 「短视频+社交电商」营销模式爆发式发展,带来的好处有什么?
- Interface test Mock combat (2) | Combined with jq to complete batch manual Mock
- JS bottom handwriting
- Redis缓存雪崩、缓存穿透、缓存击穿
- c语言结构体中的冒泡排序
- How many moments have you experienced the collapse of electronic engineers?
猜你喜欢
多肽介导PEG磷脂——靶向功能材料之DSPE-PEG-RGD/TAT/NGR/APRPG
软件开发的最大的区别是什么?
Live | StarRocks technology insider: low base dictionary global optimization
打破传统电商格局,新型社交电商到底有什么优点?
How many moments have you experienced the collapse of electronic engineers?
9.新闻分类:多分类问题
v-text指令:设置标签内容
社交电商如何做粉丝运营?云平台怎么选择商业模式?
2022/08/02 Study Notes (day22) Multithreading
修饰生物素DIAZO-生物素-PEG3-DBCO|重氮-生物素-三聚乙二醇-二苯基环辛炔
随机推荐
RequestContextHolder
【软件工程之美 - 专栏笔记】35 | 版本发布:软件上线只是新的开始
好消息!北京、珠海PMP考试时间来啦
中断系统需要解决的问题
计组错题集
【Harmony OS】【ARK UI】ETS 上下文基本操作
Live | StarRocks technology insider: low base dictionary global optimization
Browser listens for tab closing
MySQL 出现 The table is full 的解决方法
10.预测房价:回归问题
汇编题答案
浏览器监听标签页关闭
Kotlin-Flow常用封装类:StateFlow的使用
【Harmony OS】【ArkUI】ets开发 基础页面布局与数据连接
Online password generator tool recommendation
刚上线就狂吸70W粉,新型商业模式“分享购”来了,你知道吗?
【Harmony OS】【ARK UI】ets使用startAbility或startAbilityForResult方式调起Ability
接口管理工具YApi怎么用?颜值高、易管理、超好用
MySql 创建索引
那些让电子工程师崩溃瞬间,你经历了几个呢?