当前位置: 首页 > news >正文

鸿蒙OS开发之动画相关示例分享, 关于弹出倒计时动画的实战案例源码分享

基础动画案例

@Entry
@Component
struct Index {@StatebtnWidth:number = 200 // 按钮的宽度@StatebtnHeight:number = 100 // 按钮的高度build() {Row(){Column(){Button("测试").width(this.btnWidth).height(this.btnHeight)// 按钮: 用来启动动画Button("动画开始").onClick(()=>{// 写动画animateTo({duration:1000},()=>{this.btnWidth=100this.btnHeight=50})})}.width("100%")}.height("100%")}
}

动画的播放次数

@Entry
@Component
struct Index {@StatebtnWidth:number = 200 // 按钮的宽度@StatebtnHeight:number = 100 // 按钮的高度build() {Row(){Column(){Button("测试").width(this.btnWidth).height(this.btnHeight)// 按钮: 用来启动动画Button("动画开始").onClick(()=>{// 写动画// iterations: -1 表示永久, 其他表示固定次数animateTo({duration:1000, iterations: 3},()=>{this.btnWidth=100this.btnHeight=50})})}.width("100%")}.height("100%")}
}

动画的播放模式

@Entry
@Component
struct Index {@StatebtnWidth:number = 200 // 按钮的宽度@StatebtnHeight:number = 100 // 按钮的高度build() {Row(){Column(){Button("测试").width(this.btnWidth).height(this.btnHeight)// 按钮: 用来启动动画Button("动画开始").onClick(()=>{// 写动画// iterations: -1 表示永久, 其他表示固定次数// playMode: Reverse 反向 Alternate反复animateTo({duration:1000, iterations: -1, playMode:PlayMode.Alternate},()=>{this.btnWidth=100this.btnHeight=50})})}.width("100%")}.height("100%")}
}

animation动画

@Entry
@Component
struct Index {@StatebtnWidth:number = 200 // 按钮的宽度@StatebtnHeight:number = 100 // 按钮的高度build() {Row(){Column(){Button("测试").width(this.btnWidth).height(this.btnHeight).animation({duration:1000,iterations: -1,playMode:PlayMode.Alternate})// 按钮: 用来启动动画Button("动画开始").onClick(()=>{this.btnWidth=100this.btnHeight=50})}.width("100%")}.height("100%")}
}

scale缩放动画

@Entry
@Component
struct Index {@StatebtnWidth:number = 200 // 按钮的宽度@StatebtnHeight:number = 100 // 按钮的高度@StatebtnScale:number = 1; // 缩放build() {Row(){Column(){Button("测试").width(this.btnWidth).height(this.btnHeight).scale({x: this.btnScale,y: this.btnScale,}).animation({duration:1000,iterations: -1,playMode:PlayMode.Alternate})// 按钮: 用来启动动画Button("动画开始").onClick(()=>{this.btnScale *= 2})}.width("100%")}.height("100%")}
}

显示隐藏动画

@Entry
@Component
struct Index {@Statemessage:string = "你好, 张大鹏!"@StateisShowMessage:boolean = truebuild() {Row(){Column(){// 固定高度的ColumnColumn(){if(this.isShowMessage){Text(this.message).fontSize(50).fontWeight(FontWeight.Bold)}}.height(50)// 按钮, 控制Button("显示/隐藏").onClick(()=>{animateTo({duration:1000},()=>{this.isShowMessage=!this.isShowMessage})})}.width("100%")}.height("100%")}
}

弹出模态框

@Entry
@Component
struct Index {@StateisShowDialog:boolean = false// 模态框内容@BuildergetContent(){Column(){Text("测试").fontColor(Color.White)}.justifyContent(FlexAlign.Center).backgroundColor(Color.Blue).width("100%").height("100%")}build() {Row(){Button("显示/隐藏").onClick(()=>{this.isShowDialog=!this.isShowDialog})}.height("100%").bindContentCover($$this.isShowDialog, // 模态框弹出条件this.getContent, // 绑定模态框)}
}

弹出倒计时广告

@Entry
@Component
struct Index {@StateisShowDialog: boolean = false@StatetimerCount: number = 5 // 默认5秒倒计时关闭广告timer: number = -1 // 定时器// 开始倒计时beginTimerCount() {this.timer = setInterval(() => {if (this.timerCount === 0) {clearInterval(this.timer)this.timerCount = 5 // 重置计时器this.isShowDialog = false // 关闭模态框}this.timerCount--}, 1000)}// 生命周期方法: 页面消失之前aboutToDisappear(): void {clearInterval(this.timer) // 防止定时器没有及时清理}// 模态框内容@BuildergetContent() {Column() {// 右上角Row() {Text(`还剩${this.timerCount}`).fontColor(Color.White)}.width("100%").justifyContent(FlexAlign.End).padding(10)}.backgroundColor(Color.Blue).width("100%").height("100%")}build() {Row() {Button("显示").onClick(() => {this.isShowDialog = true // 显示模态框this.beginTimerCount() // 开始倒计时})}.height("100%").bindContentCover($$this.isShowDialog, // 模态框弹出条件this.getContent, // 绑定模态框{modalTransition: ModalTransition.NONE, // 取消模态框动画})}
}

在这里插入图片描述


http://www.mrgr.cn/news/37577.html

相关文章:

  • 网通产品硬件设计工程师:汽车蓝牙收发器用网络隔离变压器有哪些选择呢?
  • 2025台球展,2025河南台球及配套设施展览会3月举办
  • 【10月 EI会议推荐】电子信息技术、人工智能、智能制造、计算机技术等方向会议推荐
  • 一些写论文必须要知道的神仙级网站!芝士AI(paperzz)
  • 2024下半年软考准考证打印什么时候打印?
  • 分页查询的优化
  • Linux云计算 |【第四阶段】RDBMS1-DAY2
  • P3376 【模板】网络最大流(EK算法)
  • 实战生成式(Generative)AI
  • 基于Python大数据可视化的短视频推荐系统
  • C语言理解 —— printf 格式化输出
  • SecureCRT的使用(Linux)
  • ASP.NET Core 打包net8.0框架在Linux CentOS7上部署问题
  • Nginx源码包------YUM安装
  • RabbitMQ 界面管理说明
  • 高校教师成果管理小程序的设计与实现springboot(lw+演示+源码+运行)
  • TypeScript 设计模式之【观察者模式】
  • 传奇外网架设全套图文教程-Hero引擎
  • 【mysql】理解一条sql的执行流程
  • 一站式自闭症全托服务,让孩子全面发展