首页
学习
活动
专区
圈层
工具
发布
社区首页 >专栏 >纯血鸿蒙APP实战开发——数字滚动动效实现

纯血鸿蒙APP实战开发——数字滚动动效实现

原创
作者头像
小帅聊鸿蒙
发布2025-01-14 20:34:33
发布2025-01-14 20:34:33
5810
举报
文章被收录于专栏:鸿蒙开发笔记鸿蒙开发笔记

介绍

本示例主要介绍了数字滚动动效的实现方案。 该方案多用于数字刷新,例如页面刷新抢票数量等场景。

效果图预览

使用说明

  1. 下拉页面刷新,数字进行刷新。

实现思路

  1. 通过双重ForEach循环分别横向、纵向渲染数字。
代码语言:javascript
复制
Row() {
  ForEach(this.currentData, (item: number, index: number) => { // 横向渲染数字
    Column() {
      Column() {
        ForEach(this.dataItem, (subItem: number) => { // 纵向渲染数字
          Text(subItem.toString()) // 数字文本
        })
      }
      .translate({ x: 0, y: this.scrollYList[index] }) // 每个数字Y轴位移
    }
    .height(STYLE_CONFIG.ITEM_HEIGHT)
  })
}

如下图所示:

  1. 通过Math.random()生成随机数,并更新到currentData数组中。
代码语言:javascript
复制
let tempArr: number[] = [];
for (let i = 0; i < DATA_CONFIG.NUMBER_LEN; i++) {
  tempArr.push(Math.floor(Math.random() * 10)); // 向数组添加随机数
}
this.currentData = tempArr; // 更新当前数据
DD一下:欢迎大家关注公众号<程序猿百晓生>,可以了解到以下内容:
代码语言:erlang
复制
1.OpenHarmony开发基础
2.OpenHarmony北向开发环境搭建
3.鸿蒙南向开发环境的搭建
4.鸿蒙生态应用开发白皮书V2.0 & V3.0
5.鸿蒙开发面试真题(含参考答案) 
6.TypeScript入门学习手册
7.OpenHarmony 经典面试题(含参考答案)
8.OpenHarmony设备开发入门【最新版】
9.沉浸式剖析OpenHarmony源代码
10.系统定制指南
11.【OpenHarmony】Uboot 驱动加载流程
12.OpenHarmony构建系统--GN与子系统、部件、模块详解
13.ohos开机init启动流程
14.鸿蒙版性能优化指南
.......
  1. 使用显示动画 animateTo ,对currentData数组中的每个数字执行不同的滚动动效。
代码语言:javascript
复制
this.currentData.forEach((item: number, index: number) => {
  animateTo({
    // 每个数字与上一次数字对比,数字差值越大,执行动画时长越长。
    duration: Math.abs(item - this.preData[index]) * DATA_CONFIG.DURATION_TIME,
    curve: Curve.LinearOutSlowIn, // 减速曲线
    onFinish: () => {
      this.preData = this.currentData; // 动画执行结束后,更新上一次数据值
      this.isRefresh = false; // 刷新完毕
    }
  },
    () => {
      this.scrollYList[index] = -item * STYLE_CONFIG.ITEM_HEIGHT; // 更新每个数字Y轴偏移量
    })
})

如下图所示:

  1. 设置数字所在容器属性.clip(true),将多余的数字裁剪。

高性能知识点

工程结构&模块类型

代码语言:shell
复制
   digitalscrollanimation                                // har
   |---pages
   |   |---DigitalScrollDetail.ets                       // 数字滚动组件 
   |   |---DigitalScrollExample.ets                      // 功能页面 
   |---model
   |   |---ConstData.ets                                 // 常量数据 

写在最后

如果你觉得这篇内容对你还蛮有帮助,我想邀请你帮我三个小忙:

  • 点赞,转发,有你们的 『点赞和评论』,才是我创造的动力;
  • 关注小编,同时可以期待后续文章ing🚀,不定期分享原创知识;
  • 想要获取更多完整鸿蒙最新学习知识点,可关注B站:码牛课堂;

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 介绍
  • 效果图预览
  • 实现思路
    • DD一下:欢迎大家关注公众号<程序猿百晓生>,可以了解到以下内容:
    • 高性能知识点
    • 工程结构&模块类型
  • 写在最后
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档