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

首頁 > 學院 > 開發(fā)設計 > 正文

Lottie實現(xiàn)app首次進入動畫

2019-11-09 15:46:00
字體:
來源:轉載
供稿:網(wǎng)友

Lottie安卓開源動畫庫使用

碉堡的Lottie

Airbnb最近開源了一個名叫Lottie的動畫庫,它能夠同時支持iOS,Android與ReactNative的開發(fā).此消息一出,還在苦于探索自定義控件各種炫酷特效的我,興奮地就像發(fā)現(xiàn)的新大陸一般.可以說,Lottie的出現(xiàn),將極大地解放Android/iOS工程師于無盡的編寫原生自定義動畫的工作中.當我們的項目中用GIF實現(xiàn)一些復雜的視覺效果的時候,會遇到許多的問題.比如,GIF的文件過于龐大,并且對于不同分辨率設備的適配存在不便,并且Gif格式的色深問題是一個死穴.

比如下面這個動畫效果

原始工程導出的json文件:http://cdn.trojx.me/blog_raw/lottie_data_origin.json

如下圖所示,通過安裝在AE上的一款名叫bodymovin的插件,能夠將AE中的動畫工程文件轉換成通用的json格式描述文件,bodymovin插件本身是用于在網(wǎng)頁上呈現(xiàn)各種AE效果的一個開源庫,lottie做的事情就是實現(xiàn)了一個能夠在不同移動端平臺上呈現(xiàn)AE動畫的方式.從而達到動畫文件的一次繪制、一次轉換、隨處可用的效果.當然,就如java一次編譯,隨處運行一樣,lottie本身這個動畫播放庫并不是跨平臺的.

使用Lottie庫播放動畫

終于說到主角了,然而關于它的使用方式卻是相對簡單的.Lottie的引入與使用就如其他庫一樣,這里以Android平臺的使用為例.

把導出的json動畫文件添加到assets目錄下:

在項目的build.gradle文件中加入:

dependencies {    compile 'com.airbnb.android:lottie:1.0.1'}Lottie支持Jellybean (API 16)及以上的系統(tǒng),最簡單的使用方式是直接在布局文件中添加:

 
<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"        app:lottie_autoPlay="true" />
或者,你也可以通過代碼的方式添加.比如從位于app/src/main/assets路徑下的json文件中導入動畫數(shù)據(jù):

123
LottieAnimationView animationView = (LottieAnimationView) findViewById(R.id.animation_view);animationView.setAnimation("hello-world.json");animationView.loop(true);
你還可以通過API控制動畫,并且設置一些監(jiān)聽:

public class MainActivity extends AppCompatActivity {    @Override    PRotected void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(R.layout.activity_main);        LottieAnimationView animationView = (LottieAnimationView) findViewById(R.id.animation_view);        animationView.setAnimation("EmptyState.json");        animationView.loop(false);        Animator.AnimatorListener animatorListener = new Animator.AnimatorListener() {            @Override            public void onAnimationStart(Animator animator) {            }            @Override            public void onAnimationEnd(Animator animator) {                startActivity(new Intent(MainActivity.this,LoginActivity.class));            }            @Override            public void onAnimationCancel(Animator animator) {                startActivity(new Intent(MainActivity.this,LoginActivity.class));            }            @Override            public void onAnimationRepeat(Animator animator) {            }        };        animationView.addAnimatorListener(animatorListener);        animationView.playAnimation();    }}

補充:

想看生成json文件的看這里:http://www.trojx.me/2017/02/06/android-lottie-library/

后續(xù)補上demo


發(fā)表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發(fā)表
主站蜘蛛池模板: 岑巩县| 精河县| 宁安市| 砚山县| 比如县| 岑巩县| 建宁县| 广德县| 双城市| 淮安市| 紫云| 浠水县| 长子县| 渝北区| 安康市| 公主岭市| 常山县| 托克逊县| 枣阳市| 汉寿县| 大埔县| 石城县| 河源市| 吉隆县| 泰安市| 平塘县| 南开区| 蒙城县| 潮安县| 留坝县| 辽阳市| 海丰县| 拜泉县| 房产| 延庆县| 松原市| 伊吾县| 德庆县| 比如县| 尼木县| 罗定市|