动画 - Lottie
属性
type
- 类型:
string
- 可取值:
lottie
prop
- 描述:动画类型
trigger
类型:
bool
可取值:
true
:手动触发,需要和state配合使用。false
:自动触发默认值:
false
描述:
是否手动触发动画
state
类型:
bool
可取值:
true
:需要。false
:不需要。默认值:
false
描述:
是否需要触发动画
lottieAnimator.value
类型:
string
描述:
lottie动画本地资源名称
lottieAnimator.url
类型:
string
描述:
lottie动画远程URL
lottieAnimator.loop
类型:
bool
可取值:
true
:需要。false
:不需要。默认值:
false
描述:
动画是否循环播放
lottieAnimator.bundle
类型:
string
描述:
lottie动画的bundle(只针对有资源的lottie,iOS有效)
实现:
Android实现
不需要接入方实现
iOS实现
iOS在使用lottie动画需要根据业务使用的版本,需要根据lottie的动画协议,将lottie对应的动画实现类进行注册进来。
Lottie动画协议 (业务实现)。
// lottie动画协议
GXLottieAniamtionProtocal
// animationInfo: {"isLocal": "true", "lottieUrl": "xxx", "loopCount": "-1"}
- (void)gx_playAnimation:(NSDictionary *)animationInfo completion:(void (^ __nullable)(BOOL finished))completion;
- (BOOL)gx_isAnimationPlaying;
- (void)gx_stop;
实现Lottie动画协议之后,通过GXRegisterCenter将实现注册进来。
// 注册类
GXRegisterCenter
// lottie协议类
@property (nonatomic, readonly) Class <GXLottieAniamtionProtocal> lottieViewClass
// lottie注册方法
- (void)registerLottieViewClass:(Class <GXLottieAniamtionProtocal>)aClass;
//调用示例
[[GXRegisterCenter defaultCenter] registerLottieViewClass:[xxxx class]];
示例
{
"data": {
//数据绑定
},
"event": {
//事件绑定
},
//动画定义
"animation": {
//动画对应的nodeId
"like-animation": {
//动画类型
"type": "'lottie'",
//是否为手动触发
// true是手动触发;false是自动触发;
"trigger": true,
//动画是否正在被触发,与trigger配合使用,需要业务方传值
"state": true,
"lottieAnimator": {
//动画是否循环播放(只对自动播放动画生效)
"loop":true,
//lottie动画的bundle(只针对有资源的lottie,iOS有效)
"bundle":"'gaiax.bundle'",
// 动画的本地资源名称
"value": "'feed_like_cancel_20200601_data'",
// 动画的远程URL
"url":"'http://xxx'"
}
}
}
}