版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
《鸿蒙应用安全开发》在线开放课程项目3设计闹钟程序-动画主讲:本课程团队目录Contents项目3设计闹钟程序-动画一、转场动画二、路径动画三、总结与实践一、
转场动画组件内转场动画通过transition属性配置转场参数,在组件插入和删除时显示过渡动效,用于容器组件中的子组件插入和删除时,提升用户体验(需要配合animateTo才能生效,动效时长、曲线、延时跟随animateTo中的配置)。属性参数transition:参数类型为TransitionOptions,功能是设置组件插入显示和删除隐藏的过渡效果。其默认值为:不设置任何过渡效果时,默认有透明度从0到1的过渡效果。若设置了其他过渡效果,以设置的过渡效果为准。转场动画包括组件内转场动画、页面间转场动画和共享元素转场动画。1.1、组件内转场动画实例实例-通过控制页面内某个组件的显示与消失来实现//TransitionExam.ets@Entry@ComponentstructTransitionExam{@Stateflag:boolean=true@Stateshow:string='消失'build(){Column(){Button(this.show).width(80).height(30).margin(30).onClick(()=>{//点击按钮控制图片的显示和消失animateTo({duration:1000},()=>{if(this.flag){this.show='显示'}else{this.show='消失'}this.flag=!this.flag})})if(this.flag){//图片的显示和消失配置为不同的过渡效果Image($r("app.media.img30600")).width(300).height(600).transition({type:TransitionType.Insert,//指定生效场景为插入显示场景scale:{x:0,y:1.0}//设置缩放效果}).transition({type:TransitionType.Delete,//指定生效场景为删除隐藏场景rotate:{angle:180}//设置旋转效果})}}.width('100%')}}1.2、页面间转场动画实例页面间转场动画是在全局pageTransition方法内配置页面入场和页面退场时的自定义转场动效。//index.etsimportrouterfrom'@ohos.router';//导入页面路由模块@Entry@ComponentstructIndex{@Statescale1:number=1@Stateopacity1:number=1build(){Column(){Image($r('app.media.img30600'))//图片存放在media文件夹下.width('100%').height('100%').onClick(()=>{router.pushUrl({url:'pages/PageTransitionExam'},router.RouterMode.Standard,(err)=>{
if(err){
console.error(`未能跳转。出错代码是${err.code},出错信息是${err.message}`);return;}('成功跳转');});})}.scale({x:this.scale1}).opacity(this.opacity1)}pageTransition(){//完全自定义转场过程的效果PageTransitionEnter({duration:1200,curve:Curve.Linear}).onEnter((_type:RouteType,progress:number)=>{this.scale1=1this.opacity1=progress})//进场过程中会逐帧触发onEnter回调,入参为动效的归一化进度(0%-100%)PageTransitionExit({duration:1500,curve:Curve.Ease}).onExit((_type:RouteType,progress:number)=>{this.scale1=1-progressthis.opacity1=1})//退场过程中会逐帧触发onExit回调,入参为动效的归一化进度(0%-100%)}}实例:通过一个页面跳转到另一个页面来实现1.2、页面间转场动画实例//PageTransitionExam.etsimportrouterfrom'@ohos.router';//导入页面路由模块@Entry@ComponentstructPageTransitionExam{@Statescale2:number=1@Stateopacity2:number=1build(){Column(){Image($r('app.media.img30601'))//图片存放在media文件夹下.width('100%').height('100%').onClick(()=>{router.pushUrl({url:'pages/Index'},router.RouterMode.Standard,(err)=>{if(err){console.error(`未能跳转。出错代码是${err.code},出错信息是${err.message}`);return;}
('成功跳转');});})}.width('100%').height('100%').scale({x:this.scale2}).opacity(this.opacity2)}
pageTransition(){//完全自定义转场过程的效果PageTransitionEnter({duration:1200,curve:Curve.Linear}).onEnter((_type:RouteType,progress:number)=>{this.scale2=1this.opacity2=progress})PageTransitionExit({duration:1500,curve:Curve.Ease}).onExit((_type:RouteType,progress:number)=>{this.scale2=1-progressthis.opacity2=1})}}实例:通过一个页面跳转到另一个页面来实现1.3、共享元素转场动画实例共享元素转场动画通过设置组件的sharedTransition属性将该组件标记为共享元素并设置对应的共享元素转场动效。build(){Column(){Image($r('app.media.startIcon')).width(50).height(50).sharedTransition('sharedImage',{duration:800,curve:Curve.Linear,delay:100}).padding({left:20,top:20}).onClick(()=>{this.active=true;router.pushUrl({url:'pages/SharedTransitionExamSecond'},router.RouterMode.Standard,(err)=>{if(err){console.error(`未能跳转。出错代码是${err.code},出错信息是${err.message}`);return;}('成功跳转');});})}}}实例:通过对页面间标记为共享元素的组件设置动态效果来实现//SharedTransitionExam.etsimportrouterfrom'@ohos.router';//导入页面路由模块@Entry@ComponentstructSharedTransitionExam{@Stateactive:boolean=false1.3、共享元素转场动画实例//SharedTransitionExamSecond.ets@Entry@ComponentstructSharedTransitionExamSecond{build(){Stack(){Image($r('app.media.startIcon)).width(150).height(150).sharedTransition('sharedImage',{duration:800,curve:Curve.Linear,delay:100})}.width('100%').height('100%')}}实例:通过对页面间标记为共享元素的组件设置动态效果来实现二、
路径动画其接口如下:.motionPath({path:string,from?:number,to?:number,rotatable?:boolean})其必填参数:Path:设置位移动画的运动路径,使用svg路径字符串。path中支持使用start和end进行起点和终点的替代,如:'Mstart.xstart.yL5050Lend.xend.yZ'。from:设置运动路径的起点,其取值范围为[0,1]。to:设置运动路径的终点,其取值范围为[0,1]。rotatable:设置是否跟随路径进行旋转。路径动画通过motionPath属性配置运动路径参数而形成的位移动效,可以显著提升用户体验(需要配合animateTo才能生效,动效时长、曲线、延时跟随animateTo中的配置)。2.1、路径动画实例实例-通过设置组件的运动路径而触发位移效果来实现//MotionPathExam.ets@Entry@ComponentstructMotionPathExam{@Statetoggle:boolean=truebuild(){Column(){Button('点击我').margin(50)//执行动画:从起点移动到(300,200),再到(300,500)
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 电动车配件交通工具618宣传及营销方案
- 纺织面料辅料配套双11宣传及营销方案
- 2026年汉服知识普及活动方案策划书
- 冷冻食品定义及储存注意事项
- 2026年土木工程中级职称考试题
- 2026年网页设计师笔试题库
- 2026年通信招聘笔试网络技术题集
- 2026年事业单位招聘笔试仿真题解析
- 2026年中国素食餐饮认证考试预测题
- 单元12教案 无线局域网安全技术
- 2025年山东省济南市初二学业水平地理生物会考考试试题及答案
- 2026人教版二年级数学下册期末模拟测试卷(三套含答案)可直接打印
- 2026天津大学附属小学教师招聘8人-天津大学事业编考试参考试题及答案解析
- 2026年浙江省公开遴选公务员笔试试题及答案解析(综合类)
- (2026版)《商事调解条例》课件
- 2026年事业单位考试国内核心时事政治考点梳理(附50题)
- 2026年中考语文标点符号专项训练模拟试卷(覆盖高频考点)
- 雨课堂学堂在线学堂云《人工智能时代的创新思维(北京理工)》单元测试考核答案
- 2025年07月渤海银行2025年招考审计部团队负责人笔试历年备考题库附带答案详解试卷2套
- 2026年剧本杀主持人控场题库含答案
- T/CBDA35-2019 建筑装饰装修工程施工组织设计标准
评论
0/150
提交评论