最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Android Lottie實(shí)現(xiàn)中秋月餅變明月動畫特效實(shí)例

 更新時間:2021年09月09日 12:54:40   作者:阿策小和尚  
Lottie是Airbnb開源的一個支持 Android、iOS 以及 ReactNative,利用json文件的方式快速實(shí)現(xiàn)動畫效果的庫,下面這篇文章主要給大家介紹了關(guān)于Android Lottie實(shí)現(xiàn)中秋月餅變明月動畫特效的相關(guān)資料,需要的朋友可以參考下

前言

小菜在 Android 端進(jìn)行動畫處理時主要用的是 Android 自帶的三種動畫形式,今天小菜簡單嘗試通過 Airbnb Lottie 展示一個中秋月餅變明月的小動畫;

Lottie

Lottie 動畫是 Airbnb 開源的一套多平臺兼容的動畫形式,小菜之前簡單嘗試過 Flutter 版本,使用非常便捷,今天小菜簡單了解一下 Android 版本;

案例嘗試

1. 集成依賴

在 build.gradle 中集成最新版本的 Lottie 依賴并同步;

api 'com.airbnb.android:lottie:4.1.0'

2. 添加 LottieAnimationView 加載網(wǎng)絡(luò)資源

首先在 xml 文件中添加 LottieAnimationView,之后通過 setAnimationFromUrl() 加載網(wǎng)絡(luò)資源;其中加載網(wǎng)絡(luò)圖片時有兩個重載方法,其中 cacheKey 為緩存策略;加載完網(wǎng)絡(luò)資源之后還需要 playAnimation( 啟動動畫;

<com.airbnb.lottie.LottieAnimationView
    android:id="@+id/lottie_view"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    />

mView = (LottieAnimationView) this.findViewById(R.id.lottie_view);
mView.setAnimationFromUrl("https://assets6.lottiefiles.com/packages/lf20_Tprkoc.json");
mView.playAnimation();

3. 加載本地資源

當(dāng) LottieAnimationView 加載本地資源時,需要先下載生成的 json 文件,并添加到工程中,通過 setAnimation() 引入本地資源;其中 setAnimation() 也有多個重載方法,可以靈活應(yīng)用;

mView2 = (LottieAnimationView) this.findViewById(R.id.lottie_view2);
mView2.setAnimation("mooncake.json");
mView2.playAnimation();

4. 循環(huán)播放 & 動畫監(jiān)聽

前兩步設(shè)置完 setAnimation() 之后,播放完成就停止動畫,若需要重復(fù)播放,可以通過 loop(true) 方式進(jìn)行循環(huán)播放,但該方法在新的 API 中不建議使用,可以通過 setRepeatCount() 設(shè)置播放次數(shù),或通過動畫監(jiān)聽在動畫結(jié)束時再次播放等;

mView2.loop(true);

mView1.setRepeatCount(5);

可以通過 addAnimatorListener() 進(jìn)行動畫監(jiān)聽;其中當(dāng)設(shè)置 **** 播放次數(shù)后,每次播放均會調(diào)用 onAnimationRepeat() 回調(diào),播放結(jié)束之后才會調(diào)用 onAnimationEnd();而如果不設(shè)置播放次數(shù)時,不會進(jìn)入 onAnimationRepeat() 回調(diào);

mView2.addAnimatorListener(new Animator.AnimatorListener() {
    @Override
    public void onAnimationStart(Animator animator) {
        Log.e(TAG, "-> onAnimationStart()");
    }

    @Override
    public void onAnimationEnd(Animator animator) {
        Log.e(TAG, "-> onAnimationEnd()");
    }

    @Override
    public void onAnimationCancel(Animator animator) {
        Log.e(TAG, "-> onAnimationCancel()");
    }

    @Override
    public void onAnimationRepeat(Animator animator) {
        Log.e(TAG, "-> onAnimationRepeat()");
    }
});

5. 暫停 & 繼續(xù) & 取消

小菜通過 playAnimation() 使動畫進(jìn)行播放;而 Lottie 也提供了 pauseAnimation() 暫停動畫;resumeAnimation() 暫停后繼續(xù)播放以及 cancelAnimation() 取消動畫等方法;

其中調(diào)用 playAnimation() 時會從動畫起始位置播放,而 resumeAnimation() 會從暫停或取消動畫停止位置播放;pauseAnimation() 和 cancelAnimation() 均會停止動畫,但 cancelAnimation() 停止后會 lottieDrawable.cancelAnimation() 清空動畫 Drawable,且會在 onAnimationCancel() 監(jiān)聽中進(jìn)行回調(diào);

@Override
public void onClick(View view) {
    switch (view.getId()){
        case R.id.main_btn1:
            mView2.playAnimation();
            break;
        case R.id.main_btn2:
            mView2.pauseAnimation();
            break;
        case R.id.main_btn3:
            mView2.resumeAnimation();
            break;
        case R.id.main_btn4:
            mView2.cancelAnimation();
            break;
    }
}

小擴(kuò)展

1. 硬件加速器

小菜在使用 Lottie 時建議開啟硬件加速器,降低動畫幀率,避免卡頓;

android:hardwareAccelerated="true"

2. json 文件解析

小菜之前覺得 Lottie 的 json 文件是一個很神奇很復(fù)雜的天書,今天小菜簡單介紹一下其中屬性對應(yīng)關(guān)系;

整體結(jié)構(gòu)包括如下幾個部分:v 為對應(yīng) bodymovin 動畫版本;fr 為幀率;ip / op 分別對應(yīng)起始/結(jié)束關(guān)鍵幀;w / h 為動畫寬高;assets 為資源信息,包括 Drawable 等;layers 為圖層信息;

asstes 中 w / h 為資源寬高;u / p 非別對應(yīng)資源露肩和名稱;其中的 layers 也為圖層信息;layers 中的 ks 為動畫的主要信息;

小菜理解 Lottie 整體是利用屬性動畫控制進(jìn)度,通過進(jìn)度變更更改 layers 中觸發(fā) LottieAnimationView 重繪各個資源信息;

總結(jié)

到此這篇關(guān)于Android Lottie實(shí)現(xiàn)中秋月餅變明月動畫特效的文章就介紹到這了,更多相關(guān)Android Lottie動畫特效內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • flutter簡單使用案例

    flutter簡單使用案例

    這篇文章主要介紹了使用Flutter短視頻上滑翻頁效果,本篇介紹了?Flutter的翻頁組件PageView的使用,通過?PageView可以輕松實(shí)現(xiàn)類似短視頻的縱向上滑翻頁的效果,也可以實(shí)現(xiàn)橫向翻頁效果(如閱讀類軟件),需要的朋友可以參考下
    2023-05-05
  • Android 仿余額寶數(shù)字跳動動畫效果完整代碼

    Android 仿余額寶數(shù)字跳動動畫效果完整代碼

    這篇文章主要介紹了Android 仿余額寶數(shù)字跳動動畫效果完整代碼,需要的朋友可以參考下
    2017-11-11
  • android 中 webview 怎么用 localStorage

    android 中 webview 怎么用 localStorage

    這篇文章主要介紹了android 中 webview 怎么用 localStorage方法的相關(guān)資料,需要的朋友可以參考下
    2015-07-07
  • flutter Toast實(shí)現(xiàn)消息提示框

    flutter Toast實(shí)現(xiàn)消息提示框

    這篇文章主要為大家詳細(xì)介紹了flutter Toast實(shí)現(xiàn)消息提示框,文中示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2019-07-07
  • 快速解決fragment中onActivityResult不調(diào)用的問題

    快速解決fragment中onActivityResult不調(diào)用的問題

    下面小編就為大家?guī)硪黄焖俳鉀Qfragment中onActivityResult不調(diào)用的問題。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2017-04-04
  • Android的日志系統(tǒng)分層與logcat使用

    Android的日志系統(tǒng)分層與logcat使用

    今天小編就為大家分享一篇關(guān)于Android的日志系統(tǒng)分層與logcat使用的文章,小編覺得內(nèi)容挺不錯的,現(xiàn)在分享給大家,具有很好的參考價值,需要的朋友一起跟隨小編來看看吧
    2018-10-10
  • Android百度地圖定位后獲取周邊位置的實(shí)現(xiàn)代碼

    Android百度地圖定位后獲取周邊位置的實(shí)現(xiàn)代碼

    這篇文章主要為大家詳細(xì)介紹了Android百度地圖定位后獲取周邊位置的實(shí)現(xiàn)代碼,準(zhǔn)確獲取周邊地理位置,文中示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2016-01-01
  • Android實(shí)現(xiàn)頂部懸浮效果

    Android實(shí)現(xiàn)頂部懸浮效果

    這篇文章主要為大家詳細(xì)介紹了Android實(shí)現(xiàn)頂部懸浮效果,文中示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2017-10-10
  • Android日期選擇器對話框DatePickerDialog使用詳解

    Android日期選擇器對話框DatePickerDialog使用詳解

    這篇文章主要為大家詳細(xì)介紹了Android日期選擇器對話框DatePickerDialog的使用,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2018-01-01
  • Android 實(shí)現(xiàn)永久性開啟adb 的root權(quán)限

    Android 實(shí)現(xiàn)永久性開啟adb 的root權(quán)限

    這篇文章主要介紹了Android 實(shí)現(xiàn)永久性開啟adb 的root權(quán)限,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2020-03-03

最新評論

高雄县| 晴隆县| 德化县| 射洪县| 永平县| 曲松县| 绍兴市| 沭阳县| 尚义县| 阿拉善左旗| 尖扎县| 定西市| 通化市| 皮山县| 海南省| 滨州市| 阿巴嘎旗| 原平市| 太仓市| 黔南| 封开县| 鸡泽县| 即墨市| 乌恰县| 潮州市| 龙陵县| 积石山| 五指山市| 红安县| 大厂| 高要市| 九台市| 同江市| 武邑县| 江华| 乐昌市| 高碑店市| 安义县| 宁安市| 中宁县| 张家川|