第12次课 动画-转场动画与路径动画_第1页
第12次课 动画-转场动画与路径动画_第2页
第12次课 动画-转场动画与路径动画_第3页
第12次课 动画-转场动画与路径动画_第4页
第12次课 动画-转场动画与路径动画_第5页
已阅读5页,还剩8页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

《鸿蒙应用安全开发》在线开放课程项目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. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论