一个基于缓动函数的动画UI组件库
以下内容由 AI 翻译,如有问题请 点此提交 issue 反馈
介绍
easing-functions-cj是一个动画效果库,该库的函数曲线可用于控制动画对象实现特定的运动轨迹。
特性
- 支持多种动画效果,支持以下动画效果 | BackEaseIn | BackEaseOut | BackEaseInOut | BounceEaseIn | BounceEaseOut | BounceEaseInOut | CircEaseIn | CircEaseOut | CircEaseInOut | CubicEaseIn | CubicEaseOut | CubicEaseInOut | ElasticEaseIn | ElasticEaseOut | ElasticEaseInOut | ExpoEaseIn | ExpoEaseOut | ExpoEaseInOut | QuadEaseIn | QuadEaseOut | QuadEaseInOut | QuintEaseIn | QuintEaseOut | QuintEaseInOut | SineEaseIn | SineEaseOut | SineEaseInOut | Linear
源码目录
├─doc # 文档目录
├─entry # 示例代码文件夹
├─easingfunctions # easing-functions-cj 库源码目录
│ └─src/main/cangjie/src # 框架代码目录
└──README.md # 介绍及使用说明
接口说明
主要类和函数接口说明详见 API
使用说明
编译构建
- 通过module引入
- 克隆下载项目
- 将easingfunctions模块拷贝到应用项目下
- 在自身应用根目录build-profile.json5的"modules"中添加
{ "name": "easingfunctions", "srcPath": "./easingfunctions" } - 修改自身应用 entry 下的 oh-package.json5 文件,在 dependencies 字段添加 "@cangjie-tpc/easingfunctions": "file:../easingfunctions",点击右上角“Sync Now”
{ "name": "entry", "version": "1.0.0", "description": "Please describe the basic information.", "main": "", "author": "", "license": "", "dependencies": { "@cangjie-tpc/easingfunctions": "file:../easingfunctions" } } - 在项目中使用 import easingfunctions.* 引用easingfunctions项目
import easingfunctions.*
- 把 easingfunctions 作为三方库依赖引入
- 目标工程把 easingfunctions 依赖库作为 git submodule 引入
> cd $工程根目录 > mkdir third-party > cd third-party > git submodule add "https://gitcode.com/Cangjie-TPC/easing-functions-cj.git" - 修改自身应用 entry/src/main/cangjie 下的 cjpm.toml 文件,添加依赖
[dependencies.easingfunctions] path = "../../../../third-party/easing-functions-cj/easingfunctions/src/main/cangjie" - 删除third-party\easing-functions-cj\easingfunctions\src\main\cangjie\cjpm.toml中
[dependencies.cj_res_easingfunctions] path = "./cj_res" version = "1.0.0"- 在项目中使用 easingfunctions 组件
import easingfunctions.*
- 目标工程把 easingfunctions 依赖库作为 git submodule 引入
功能示例
// 第一步:创建自己需要的动画
var animator: AnimatorResult = AnimatorResult(
AnimatorOptions(
duration: 1000,
easing: "linear",
delay: 0,
fill: AnimatorFill.None,
direction: AnimatorDirection.Normal,
iterations: 1,
begin: 0.0,
end: 1.0
)
)
// 第二步,实现onframe方法,并调用函数方法进行计算
this.animator.onframe = {
value: Float64 =>
var xDistance = this.endPoint.x - this.beginPoint.x
var yDistance = this.endPoint.y - this.beginPoint.y
this.lineToParams.x = this.beginPoint.x + value * xDistance
var f: Float32 = skill.getMethod().calculate(Float32(value), 0.0, 120.0, 1.0)
this.lineToParams.y = Float64(170.0 - f)
Hilog.info(0x0000, "v1", "liney = ${this.lineToParams.y}")
this.onAnimateUpdate()
}
// 详细使用示例请参考entry应用
约束与限制
在下述版本验证通过:
DevEco Studio 5.0.5 Release(5.0.13.240) Cangjie Support Plugin 5.0.13.200
开源协议
本项目基于 MIT License ,请自由地享受和参与开源。
参与贡献
欢迎给我们提交PR,欢迎给我们提交Issue,欢迎参与任何形式的贡献。