国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 學院 > 開發設計 > 正文

開源項目- Lottie 簡介

2019-11-09 17:55:10
字體:
來源:轉載
供稿:網友

Airbnb在GitHub上面開源了一個項目lottie-android,最近火的不要不要的,牢牢占據Trending排行榜(日、周、月)首位,下面我們就見識一下這個項目。 首先放上Lottie在GitHub上面的項目地址:Android,iOS, 和React Native。

Lottie簡介

Lottie是一個為Android和IOS設備提供的一個開源框架,它能夠解析通過Adobe After Effects 軟件做出來的動畫,動畫文件通過Bodymovin導出json文件,就可以通過Lottie中的LottieAnimationView來使用了。 Bodymovin是一個After Effects的插件,它由Hernan Torrisi開發。 我們先看看官方給出的實現的動畫效果:

這些動畫如果讓你實現起來,你可能會覺得很麻煩,但是通過Lottie這一切就變得很容易。 想了解更多請參考官方介紹

使用方法

首先由視覺設計師通過Adobe After Effects做好這些動畫,這個比我們用代碼來實現會容易的很多,然后Bodymovin導出json文件,這些json文件描述了該動畫的一些關鍵點的坐標以及運動軌跡,然后把json文件放到項目的app/src/main/assets目錄下,代碼中在build.gradle中添加依賴:

dependencies { compile 'com.airbnb.android:lottie:1.0.1'}

在布局文件上加上:

<com.airbnb.lottie.LottieAnimationView android:id="@+id/animation_view" android:layout_width="wrap_content" android:layout_height="wrap_content" app:lottie_fileName="hello-world.json" app:lottie_loop="true"

或者代碼中實現:

LottieAnimationView animationView = (LottieAnimationView) findViewById(R.id.animation_view);animationView.setAnimation("hello-world.json");animationView.loop(true);

此方法將加載文件并在后臺解析動畫,并在完成后異步開始呈現動畫。 Lottie只支持Jellybean (API 16)或以上版本。 通過源碼我們可以發現LottieAnimationView是繼承自AppCompatImageView,我們可以像使用其他View一樣來使用它。

LottieAnimationView animationView = (LottieAnimationView) findViewById(R.id.animation_view);

甚至可以從網絡上下載json數據:

LottieComposition composition = LottieComposition.fromJson(getResources(), jsonObject, (composition) -> { animationView.setComposition(composition); animationView.playAnimation(); });

或者使用

setAnimation(JSONObject);

我們還可以控制動畫或者添加監聽器:

animationView.addAnimatorUpdateListener((animation) -> { // Do something.});animationView.playAnimation();...if (animationView.isAnimating()) { // Do something.}...animationView.setPRogress(0.5f);...// Custom animation speed or duration.ValueAnimator animator = ValueAnimator.ofFloat(0f, 1f) .setDuration(500);animator.addUpdateListener(animation -> { animationView.setProgress(animation.getAnimatedValue());});animator.start();...animationView.cancelAnimation();

LottieAnimationView是使用LottieDrawable來渲染動畫的,如果有必要,還可以直接使用LottieDrawable

LottieDrawable drawable = new LottieDrawable();LottieComposition.fromAssetFileName(getContext(), "hello-world.json", (composition) -> { drawable.setComposition(composition);});

如果動畫會被頻繁的復用,LottieAnimationView有一套緩存策略,可以使用

LottieAnimationView#setAnimation(String, CacheStrategy)

來實現它,CacheStrategy可以是Strong,Weak或者是None,這樣LottieAnimationView就可以持有一個已經加載和解析動畫的強引用或者弱引用。

先簡單介紹到這里,稍后會帶來Lottie的源碼分析……


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 德江县| 阜康市| 永州市| 奉贤区| 新宾| 敦煌市| 台州市| 武胜县| 秀山| 余江县| 茶陵县| 德昌县| 修武县| 汝南县| 嘉善县| 玉龙| 尚志市| 兴安盟| 岐山县| 南部县| 安福县| 石阡县| 玛纳斯县| 东源县| 大宁县| 枞阳县| 长寿区| 独山县| 广汉市| 永城市| 内黄县| 吉木萨尔县| 通渭县| 大埔县| 交城县| 乐安县| 宿迁市| 昆山市| 庆云县| 会东县| 绥宁县|