animation-view.md 3.4 KB
Newer Older
DCloud-yyl's avatar
DCloud-yyl 已提交
1
#### animation-view
S
shutao 已提交
2
Lottie动画组件,动画资源参考[Lottie官方链接](https://airbnb.design/lottie/)
DCloud-yyl's avatar
DCloud-yyl 已提交
3

DCloud-yyl's avatar
DCloud-yyl 已提交
4
> animation-view组件是[uts组件](https://uniapp.dcloud.net.cn/plugin/uts-component.html),需下载插件:[animation-view](https://ext.dcloud.net.cn/plugin?name=uni-animation-view),仅app平台 nvue/uvue 页面支持  
DCloud-yyl's avatar
DCloud-yyl 已提交
5 6 7

> [uts组件](https://uniapp.dcloud.net.cn/plugin/uts-component.html)需 HBuilderX 3.7.0+  

DCloud-yyl's avatar
DCloud-yyl 已提交
8
> app平台真机运行需要打[自定义基座](https://uniapp.dcloud.net.cn/tutorial/run/run-app.html#customplayground)  
DCloud-yyl's avatar
DCloud-yyl 已提交
9 10 11 12


**平台差异说明**

13
|App|H5|微信小程序|支付宝小程序|百度小程序|抖音小程序、飞书小程序|QQ小程序|快应用|360小程序|快手小程序|京东小程序|
DCloud-yyl's avatar
DCloud-yyl 已提交
14
|:-:|:-:|:-:|:-:|:-:|:-:|:-:|:-:|:-:|:-:|:-:|
fxy060608's avatar
fxy060608 已提交
15
|√|x|x|x|√|x|x|x|x|x|x|
DCloud-yyl's avatar
DCloud-yyl 已提交
16 17


DCloud-yyl's avatar
DCloud-yyl 已提交
18 19 20 21
- animation-view 在app平台集成的是lottie官方原生sdk,仅nvue/uvue页面支持,vue页面不支持。vue页面可使用webview、或renderjs集成lottie的h5版、或使用下方的微信小程序方案。
- app平台实现使用了Lottie官方SDK,开源项目:[Lottie for Android](https://github.com/airbnb/lottie-android)[Lottie for iOS](https://github.com/airbnb/lottie-ios)  
	* app-android平台要求Android5(API Leavel 21)及以上系统  
	* app-ios平台要求iOS11及以上版本系统  
DCloud_Heavensoft's avatar
DCloud_Heavensoft 已提交
22 23 24 25
- 微信小程序没有内置该组件,需使用开源项目[https://github.com/wechat-miniprogram/lottie-miniprogram](https://github.com/wechat-miniprogram/lottie-miniprogram)
- 百度小程序已经由百度官方内置了animation-view,底层基于lottie sdk实现。
- 微信、百度之外的其他小程序,可考虑webview加载lottie的h5版,或评估上面的lottie-miniprogram是否兼容。

DCloud-yyl's avatar
DCloud-yyl 已提交
26 27 28 29 30 31 32 33 34 35 36 37 38

**属性说明**

|属性名|类型|默认值|说明|
|:-|:-|:-|:-|
| path			| String		|		| 动画资源地址,支持本地路径和网络路径	|
| loop			| Boolean		| false	| 动画是否循环播放 					|
| autoplay		| Boolean		| true	| 动画是否自动播放					|
| action		| String		| play	| 动画操作,可取值 play、pause、stop	|
| hidden		| Boolean		| true	| 是否隐藏动画						|
| @bindended	| EventHandle	|		| 当播放到末尾时触发 ended 事件(自然播放结束会触发回调,循环播放结束及手动停止动画不会触发)	|

**注意**
fxy060608's avatar
fxy060608 已提交
39
* 百度小程序平台path属性目前不支持远程地址,仅支持本地绝对路径,[详情](https://smartprogram.baidu.com/docs/develop/component/animation-view-Lottie/)
DCloud-yyl's avatar
DCloud-yyl 已提交
40 41 42 43 44

**代码示例**

```html
<template>
fxy060608's avatar
fxy060608 已提交
45
	<view>
DCloud-yyl's avatar
DCloud-yyl 已提交
46 47 48 49
		<animation-view class="animation" :path="path" :loop="loop" :autoplay="autoplay" :action="action"
			:hidden="hidden" @bindended="lottieEnd">
		</animation-view>
		<button @click="playLottie" type="primary">{{status}}lottie动画</button>
fxy060608's avatar
fxy060608 已提交
50
	</view>
DCloud-yyl's avatar
DCloud-yyl 已提交
51 52 53 54 55 56
</template>

<script>
	export default {
		data() {
			return {
DCloud-yyl's avatar
DCloud-yyl 已提交
57
				path: '/uni_modules/uni-animation-view/static/lottie.json',
DCloud-yyl's avatar
DCloud-yyl 已提交
58
				loop: false,
DCloud-yyl's avatar
DCloud-yyl 已提交
59 60
				autoplay: true,
				action: 'stop',
DCloud-yyl's avatar
DCloud-yyl 已提交
61
				hidden: false,
DCloud-yyl's avatar
DCloud-yyl 已提交
62
				status: '播放'
DCloud-yyl's avatar
DCloud-yyl 已提交
63 64 65 66
			}
		},
		methods: {
			playLottie() {
DCloud-yyl's avatar
DCloud-yyl 已提交
67
				this.action = ('play' !== this.action) ? 'play' : 'pause';
DCloud-yyl's avatar
DCloud-yyl 已提交
68 69 70
				this.status = ('pause' === this.action) ? '播放' : '暂停';
			},
			lottieEnd() {
DCloud-yyl's avatar
DCloud-yyl 已提交
71 72 73
				this.status = '播放';
				this.action = 'stop';
				console.log('动画播放结束');
DCloud-yyl's avatar
DCloud-yyl 已提交
74 75 76 77 78 79 80
			}
		}
	}
</script>

<style>
	.animation {
DCloud-yyl's avatar
DCloud-yyl 已提交
81 82 83 84
		width: 750rpx;
		height: 300rpx;
		background-color: #FF0000;
		margin-bottom: 20px;
DCloud-yyl's avatar
DCloud-yyl 已提交
85 86 87
	}
</style>
```