【鸿蒙学习笔记】使用动画

官方文档:使用动画

目录标题

  • 属性动画:通用属性发生改变时而产生的属性渐变效果
    • animation
    • animateTo
    • 自定义属性动画 @AnimatableExtend
  • 转场动画:是页面或组件的切换动画 , 显示/隐藏 切换时的动画
    • 出现/消失转场:实现一个组件出现或者消失时的动画效果
    • 导航转场:一个界面消失,另外一个界面出现
    • 模态转场:新的界面覆盖在旧的界面上,旧的界面不消失的
    • 共享元素转场:对元素做的一种位置和大小匹配的过渡动画效果
    • 动画曲线:属性值关于时间的变化函数
  • 其他未完待续

在这里插入图片描述

属性动画:通用属性发生改变时而产生的属性渐变效果

animation

import curves from '@ohos.curves';@Entry
@Component
struct AnimationDemo {@State flag: boolean = false;@State rotateValue: number = 0;@State animationValue: number = 0;@State color: Color = Color.Red;build() {Column() {Column() {Text('ArkUI').textStyle().backgroundColor(0xf56c6c).fontColor(Color.Yellow).rotate({ angle: this.rotateValue }).animation({ curve: curves.springMotion() })Text('ArkUI').textStyle().backgroundColor(0x67C23A).fontColor(this.color).translate({ x: this.animationValue, y: this.animationValue }).animation({ curve: curves.springMotion() })}Button('点我').margin({ top: 120 }).width(150).onClick(() => {this.flag = !this.flag;this.rotateValue = this.flag ? 180 : 0;this.animationValue = this.flag ? 20 : 0;this.color = this.flag ? Color.Black : Color.White;})}.width('100%').height('100%').backgroundColor(Color.Pink).justifyContent(FlexAlign.Center)}
}@Extend(Text)
function textStyle() {.fontWeight(FontWeight.Bold).fontSize(30).textAlign(TextAlign.Center).borderRadius(10).width(150).height(150)
}

在这里插入图片描述

animateTo

import curves from '@ohos.curves'@Entry
@Component
struct PropAnimation {@State flag: boolean = false;@State rotateValue: number = 0;@State translateValue: number = 0;@State opacityValue: number = 1;build() {Column() {Column() {this.CommonText()}.ColumnStyle().backgroundColor(0xf56c6c).rotate({ angle: this.rotateValue })Column() {this.CommonText()}.ColumnStyle().backgroundColor(0x67C23A).opacity(this.opacityValue).translate({ x: this.translateValue, y: this.translateValue })Button('点我').margin({ top: 120 }).width(150).onClick(() => {this.flag = !this.flag;animateTo({ curve: curves.springMotion() }, () => {this.rotateValue = this.flag ? 90 : 0;this.opacityValue = this.flag ? 0.6 : 1;this.translateValue = this.flag ? 100 : 0;})})}.width('100%').height('100%').backgroundColor(Color.Pink).justifyContent(FlexAlign.Center)}@BuilderCommonText() {Text('ArkUI').fontWeight(FontWeight.Bold).fontSize(30).fontColor(Color.White)}
}@Extend(Column)
function ColumnStyle() {.width(150).height(150).borderRadius(10).justifyContent(FlexAlign.Center)
}

在这里插入图片描述

自定义属性动画 @AnimatableExtend

// 第一步:使用@AnimatableExtend装饰器,自定义可动画属性接口
@AnimatableExtend(Text)
function rollFontSize(size: number) {.fontSize(size)
}@Entry
@Component
struct AnimatablePropertyExample {@State fontSize: number = 20;build() {Row() {Text("点击我").backgroundColor(Color.Pink).width(300).height(140).textAlign(TextAlign.Center).rollFontSize(this.fontSize).animation({ duration: 2000, delay: 0, curve: Curve.Ease }).onClick(() => {this.fontSize = this.fontSize == 20 ? 30 : 20;})}.width("100%").height('100%').justifyContent(FlexAlign.Center).padding(10)}
}

在这里插入图片描述

转场动画:是页面或组件的切换动画 , 显示/隐藏 切换时的动画

出现/消失转场:实现一个组件出现或者消失时的动画效果

import curves from '@ohos.curves';@Entry
@Component
struct TransitionEffectDemo {@State isPresent: boolean = false;private effect: TransitionEffect =// 创建默认透明度转场效果,并指定了springMotion(0.6, 0.8)曲线TransitionEffect.OPACITY.animation({ curve: curves.springMotion(0.1, 0.1) }).combine(TransitionEffect.scale({ x: 3, y: 3 }))// 添加旋转转场效果.combine(TransitionEffect.rotate({ angle: 90 }))// 添加平移转场效果.combine(TransitionEffect.translate({ y: 100 }).animation({ curve: curves.springMotion() }))// 添加move转场效果.combine(TransitionEffect.move(TransitionEdge.BOTTOM))build() {Stack() {if (this.isPresent) {Column() {Text('ArkUI').fontWeight(FontWeight.Bold).fontSize(20).fontColor(Color.White)}.justifyContent(FlexAlign.Center).width(150).height(150).borderRadius(10).backgroundColor(0xf56c6c).transition(this.effect)}Column().width(155).height(155).border({ width: 5, radius: 10, color: Color.Black })Button('Click').margin({ top: 320 }).onClick(() => {this.isPresent = !this.isPresent;})}.width('100%').height('60%')}
}

在这里插入图片描述

导航转场:一个界面消失,另外一个界面出现

需要消化

  1. 导航转场的动画效果是系统定义的,开发者不能修改。
  2. 导航转场推荐使用Navigation组件实现,可搭配NavRouter组件和NavDestination组件实现导
    航功能。
  3. 使用场景
    在这里插入图片描述

模态转场:新的界面覆盖在旧的界面上,旧的界面不消失的

  1. 应用场景
    弹出对话框时对话框做出现和消失的动画

共享元素转场:对元素做的一种位置和大小匹配的过渡动画效果

  1. 一镜到底动效,眼瞅着变化

动画曲线:属性值关于时间的变化函数

需要消化

其他未完待续

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/bicheng/44093.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

redis内存分析

阿里云redis集群对key进行hash后保存在对应的后端节点,使每个节点的key数量大致相同,但是如果存在大key,就会导致单个节点内存用满,可以使用redis-rdb-tools 或rdr来对内存进行分析。 redis-rdb-tools redis-rdb-tools通过对dum…

【Superset】dashboard 自定义URL

URL设置 在发布仪表盘(dashboard)后,可以通过修改看板属性中的SLUG等,生成url 举例: http://localhost:8090/superset/dashboard/test/ 参数设置 以下 URL 参数可用于修改仪表板的呈现方式:此处参考了官…

SolidWorks滚花螺栓制作-cnblog

目标 规划基准图形 确定尺寸,单位mm 我 对固定好的图形进行旋转 倒角 设置螺纹 注意改变深度为15mm 收尾位置补全 滚花 建立基准面 制作多边形 添加穿透 扫描切除 圆周阵列 成品完成

春风得意特斯拉(六)

占据顶流的炼金术 科技企业的创始人,也是品牌传播的载体和IP,他们自觉或不自觉的人设和流量会自动加持到品牌身上,让品牌和人设双向赋能,成为媒体的流量宠儿。纵观全球,科技行业创始人个人品牌打造之路也各有千秋。国外…

【深度学习】手动完成线性回归!

🍊嗨,大家好,我是小森( ﹡ˆoˆ﹡ )! 易编橙终身成长社群创始团队嘉宾,橙似锦计划领衔成员、阿里云专家博主、腾讯云内容共创官、CSDN人工智能领域优质创作者 。 易编橙:一个帮助编程小…

现代码头装卸系统:技术创新与效率提升

引言 码头装卸系统在全球贸易和物流链中扮演着至关重要的角色。随着全球化进程的加快,国际贸易量不断增加,港口作为货物进出主要枢纽,其装卸效率直接影响到整个物流链的运作效率和成本。一个高效、现代化的码头装卸系统不仅能提高港口的货物处…

JVM是如何创建一个对象的?

哈喽,大家好🎉,我是世杰。 本文我为大家介绍面试官经常考察的**「Java对象创建流程」** 照例在开头留一些面试考察内容~~ 面试连环call Java对象创建的流程是什么样?JVM执行new关键字时都有哪些操作?JVM在频繁创建对象时,如何…

JVM垃圾回收器详解

垃圾回收器 JDK 默认垃圾收集器(使用 java -XX:PrintCommandLineFlags -version 命令查看): JDK 8:Parallel Scavenge(新生代) Parallel Old(老年代) JDK 9 ~ JDK20: G1 堆内存中…

CVE-2024-6387Open SSH漏洞彻底解决举措(含踩坑内容)

一、漏洞名称 OpenSSH 远程代码执行漏洞(CVE-2024-6387) 二、漏洞概述 Open SSH是基于SSH协议的安全网络通信工具,广泛应用于远程服务器管理、加密文件传输、端口转发、远程控制等多个领域。近日被爆出存在一个远程代码执行漏洞,由于Open SSH服务器端…

2024年夏季德旺杯数学素养水平测试

此为小高组的测试,不过德旺杯主要看获奖情况,选择学员入营

基于考研题库小程序V2.0实现倒计时功能板块和超时判错功能

V2.0 需求沟通 需求分析 计时模块 3.1.1、功能描述←计时模块用于做题过程中对每一题的作答进行30秒倒计时,超时直接判错,同时将总用时显示在界面上;记录每次做题的总用时。 3.1.2、接口描述←与判定模块的接口为超时判定,若单题用时超过 …

人工智能和机器学习 (复旦大学计算机科学与技术实践工作站)20240703(上午场)人工智能初步、mind+人脸识别

前言 在这个科技日新月异的时代,人工智能(AI)已经逐渐渗透到我们生活的方方面面,从智能家居到自动驾驶,无一不彰显着AI的强大潜力。而人脸识别技术作为AI领域的一项重要应用,更是以其高效、便捷的特点受到了…

萤石揽获2024葵花奖17项重磅大奖 登顶荣誉之巅

7月9日,第八届葵花奖智能家居评选颁奖盛典在中国建博会(广州)广交会展馆隆重举行。萤石共斩获横跨智能锁、智能家居摄像机、智能清洁、全屋智能以及物联网云平台等多个领域的17项大奖,创下行业最多记录,并问鼎金至尊奖…

记录|C#安装+HslCommunication安装

记录线索 前言一、C#安装1.社区版下载2.VS2022界面设置 二、HslCommunication安装1.前提2.安装3.相关文件【重点】 更新记录 前言 初心是为了下次到新的电脑上安装VS2022做C#上机位项目时能快速安装成功。 一、C#安装 1.社区版下载 Step1. 直接点击VS2022,跳转下…

华为机试HJ106字符逆序

华为机试HJ106字符逆序 题目: 想法: 将输入的字符串倒叙输出即可 input_str input()print(input_str[::-1])

二十年大数据到 AI,图灵奖得主眼中的数据库因果循环

最近,MIT 教授 Michael Stonebraker 和 CMU 教授 Andrew Pavlo (Andy) 教授联合发表了一篇数据库论文。Michael Stonebraker 80 高龄,是数据库行业唯一在世的图灵奖得主,Andy 则是业界少壮派里的最大 KOL。 一老一少,当今数据库届…

MVC架构

MVC架构 MVC架构在软件开发中通常指的是一种设计模式,它将应用程序分为三个主要组成部分:模型(Model)、视图(View)和控制器(Controller)。这种分层结构有助于组织代码,使…

钡铼技术有限公司S270用于智慧物流中心货物追踪与调度

钡铼技术有限公司的第四代S270是一款专为智慧物流中心设计的工业级4G远程遥测终端RTU,其强大的功能和灵活性使其成为货物追踪与调度的理想选择。 技术规格和功能特点 钡铼S270支持多种通信协议,包括短信和MQTT,这使得它能够与各种云平台如华…

react学习——23react中的路由的使用(重要)

一、路由的基本使用 1.明确好界面中的导航区、展示区2.导航区的a标签改为Link标签<Link to"/xxxxx">Demo</Link>3.展示区写Route标签进行路径的匹配<Route path/xxxx component{Demo}/>4.<App>的最外侧包裹了一个<BrowserRouter>或<…

*算法训练(leetcode)第二十七天 | 56. 合并区间、738. 单调递增的数字、968. 监控二叉树

刷题记录 56. 合并区间*738. 单调递增的数字*968. 监控二叉树 56. 合并区间 leetcode题目地址 排序后遇到有重合的区间选择最大的区间保存即可&#xff0c;结果集中保存的是离当前区间最近的区间&#xff0c;因此使用当前区间与结果集中的最后一个集合比较查看是否有重合&…