尧图网络 高端网站定制 · 原创设计
免费咨询热线
400-888-6620
免费获取方案
如何为 easy-loading-cj 添加第 28 种动画?从零实现新指示器的完整步骤
如何为 easy-loading-cj 添加第 28 种动画从零实现新指示器的完整步骤【免费下载链接】easy-loading-cjeasy-loading提供多种 loading/Toast 动画加载效果项目地址: https://gitcode.com/Cangjie-TPC/easy-loading-cjeasy-loading-cj 是一个基于 Cangjie 语言的开源 loading/Toast 动画库目前已内置 27 种加载动画效果。如果你想让它拥有独一份的视觉效果自己动手添加第 28 种 loading 动画并不难——本文用 6 个步骤带你从零完成一个新指示器Indicator的完整实现写动画组件 → 注册枚举 → 挂载模型 → 主组件分发 → 示例页面验证全程照着现有源码复制粘贴式改造即可。第一步看懂 easy-loading-cj 的四层架构动手前先花 2 分钟理解项目结构新增动画的所有改动点都藏在下面 4 个文件里层级文件职责① 类型枚举spin_kit_wave_type.cj定义EasyLoadingIndicatorType每种动画对应一个枚举值② 数据组件circle.cj 等每种动画一个独立文件XxxModel数据类 XxxComponent动画组件③ 总模型easy_loading_model.cjEasyLoadingModel统一持有各动画的 Model 与配置④ 主组件easy_loading.cjEasyLoading组件按类型分发渲染对应动画所有动画源码都放在easyloading/src/main/cangjie/src/目录下README.md 的源码目录一节有完整说明。第二步在 EasyLoadingIndicatorType 枚举中登记新动画打开 spin_kit_wave_type.cj在EasyLoadingIndicatorType枚举里追加你的新类型例如| MYANIM。⚠️ 关键细节该枚举手工实现了/!运算符采用match全量匹配新增枚举值后必须同步补上case (MYANIM, MYANIM) true否则主组件的分发判断永远不成立动画不会显示。第三步编写数据模型与动画组件核心步骤新建文件 my_anim.cj直接参考结构最简洁的 circle.cj。每个动画文件固定由两部分组成1数据模型类用Observed声明颜色、尺寸、时长等参数标Publishsetter 方法返回this以支持链式调用Observed public class MyAnimModel { Publish var size: Float64 50.0 Publish var colors: ArrayColor [Color.RED] public func setSize(size: Float64): MyAnimModel { this.size size return this } }2动画组件类用Component声明build()里摆放基本图形动画交给animateTo在onAppear中触发Component public class MyAnimComponent { State var model: MyAnimModel MyAnimModel() public func setAnimator() { animateTo( AnimateParam(duration: 1000, iterations: -1, curve: Curve.EaseInOut), { /* 修改状态变量驱动动画 */ } ) } func build() { /* 你的图形布局 */ } } 小提示循环动画的核心技巧是iterations: -1PlayMode.Alternate或修改Publish状态变量让animateTo回调反复驱动属性变化。第四步把新 Model 挂载到 EasyLoadingModel在 easy_loading_model.cj 中做三处补充与现有 27 种动画保持同一模式增加可空字段Publish var myAnimModel: ?MyAnimModel OptionMyAnimModel.None增加链式 settersetMyAnimModel(...)增加 gettergetMyAnimModel(): ?MyAnimModelOption类型让未配置该动画成为合法状态主组件分发时会用isSome()做空值检查避免未设置模型时崩溃。第五步在主组件 EasyLoading 中添加分发分支打开 easy_loading.cj在build()的if / else if分发链中追加一个分支模式与其他 26 个完全一致} else if (this.model.getIndicatorType().getOrThrow() EasyLoadingIndicatorType.MYANIM this.model.getMyAnimModel().isSome()) { MyAnimComponent(model: this.model.getMyAnimModel()()) }至此动画库内部的全部接线已完成 ✅第六步在 entry 示例工程中验证效果项目的 entry 目录下每种动画都配有一个示例页面如 sample_circle.cj新建sample_my_anim.cj后页面逻辑非常简单aboutToAppear中创建MyAnimModel并配置尺寸、颜色用EasyLoadingModel设置.setIndicatorType(EasyLoadingIndicatorType.MYANIM)和.setMyAnimModel(...)build()中放置EasyLoading(model: this.loadingModel)点击按钮调用show()运行 DevEco Studio项目验证版本见 README.md 约束与限制一节看到动画跑起来说明你的第 28 种 loading 动画已正式上线 收尾检查清单枚举值已加入/!的match分支已同步Model 字段、setter、getter 命名与现有规范一致xxxModel/setXxxModel/getXxxModelEasyLoading.cj分发条件同时判断了类型与isSome()示例页面能正常show()动画循环不卡顿接口文档 doc/feature_api.md 已补充新 Model 的说明按照以上 6 步从新增一个EasyLoadingIndicatorType枚举值到示例页面看到动效整个流程与现有 27 种动画的实现方式完全对齐。更多参数遮罩、缩放、旋转、透明度均通过EasyLoadingModel的链式方法配置细节可查阅 doc/feature_api.md。祝开发愉快期待你的第 28 种动画【免费下载链接】easy-loading-cjeasy-loading提供多种 loading/Toast 动画加载效果项目地址: https://gitcode.com/Cangjie-TPC/easy-loading-cj创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
RELATED

相关推荐

UC网盘直链解析原理:不登录下载的底层逻辑与实操

UC网盘直链解析原理:不登录下载的底层逻辑与实操

1. 从“转存才能下”说起:UC网盘的分享机制到底卡在哪经常用UC网盘的朋友大概率遇到过这种场景:朋友甩过来一个分享链接,你点开一看,页面提示要先登录账号、再转存到自己的网盘,然后才能下载。如果只是偶尔用一次&…

📅 2026/9/25 4:06:12
从零理解Online Judge:OJ判题原理、平台选择与刷题排错全攻略

从零理解Online Judge:OJ判题原理、平台选择与刷题排错全攻略

聊到“3.1 OJ”这个标题,我第一反应是:这是一个课程讲义里的章节号,大概率是某个程序设计课或者算法竞赛入门课里,专门讲 Online Judge(在线评测系统)的那一节课。我太熟悉这个场景了——老师刚教完基本语法…

📅 2026/9/25 4:06:12
Qt QPalette配色机制详解:从原理到实战,彻底掌控控件颜色

Qt QPalette配色机制详解:从原理到实战,彻底掌控控件颜色

Qt开发者绕不开的痛点,就是“默认控件实在太丑了”。不管是刚接触Qt的新手,还是写了几年业务代码的老手,面对灰蒙蒙的QPushButton、白底黑字的QLineEdit,都会冒出同一个念头:怎么让界面好看一点?市面上的方…

📅 2026/9/25 4:06:12
MORE NEWS

更多资讯

📰

xberg C 插件 API:xberg_list_post_processors 列出已注册后处理器全解析

后端AI 应用NLP 【免费下载链接】xberg Polyglot document intelligence with a Rust core: extract text, metadata, images, tables, and structured data from 106 formats across 140 file extensions, plus code intelligence for 371 languages. Fifteen bindings, with …

📰

32路IMU阵列替代地震检波器的嵌入式实现

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

📰

在 react-native-bottom-sheet 中集成 React Navigation Stack 导航器的完整指南

前端移动开发UI组件跨平台 【免费下载链接】react-native-bottom-sheet A performant interactive bottom sheet with fully configurable options 🚀 项目地址: https://gitcode.com/gh_mirrors/re/react-native-bottom-sheet 点击查看 免费下载 导读 …

📰

Apache DataFusion 函数文档化机制解析:datafusion-doc 与 `[user_doc]` 宏实战指南

大数据数据分析后端 【免费下载链接】datafusion Apache DataFusion SQL Query Engine 项目地址: https://gitcode.com/gh_mirrors/datafu/datafusion 点击查看 免费下载 Apache DataFusion 是一个用 Rust 编写的可扩展查询执行框架,使用 Apache Arrow …

📰

高通Camera PDAF调试实战:Type2到Type3迁移避坑指南

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

📰

TOML4CJ vs JSON vs YAML:为什么配置文件该选TOML?实战对比分析

TOML4CJ vs JSON vs YAML:为什么配置文件该选TOML?实战对比分析 【免费下载链接】toml4cj 一个TOML格式解析库 项目地址: https://gitcode.com/Cangjie-TPC/toml4cj 配置文件是每个项目都绕不开的基础设施。当你需要为应用选择配置文件格式时&…

TODAY

今日更新

THIS WEEK

本周精选

THIS MONTH

本月热门

读完文章,想聊聊您的网站?

告诉我们您的行业与需求,资深顾问一对一梳理方案与报价,全程免费。

📞 💬