溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務(wù)條款》

利用Android Lottie實現(xiàn)中秋月餅變明月動畫特效代碼分享

發(fā)布時間:2021-09-09 16:38:53 來源:億速云 閱讀:116 作者:chen 欄目:開發(fā)技術(shù)

本篇內(nèi)容主要講解“利用Android Lottie實現(xiàn)中秋月餅變明月動畫特效代碼分享”,感興趣的朋友不妨來看看。本文介紹的方法操作簡單快捷,實用性強(qiáng)。下面就讓小編來帶大家學(xué)習(xí)“利用Android Lottie實現(xiàn)中秋月餅變明月動畫特效代碼分享”吧!

目錄
    • 案例嘗試

      • 1. 集成依賴

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

      • 3. 加載本地資源

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

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

    • 小擴(kuò)展

      • 1. 硬件加速器

      • 2. json 文件解析


案例嘗試

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();

利用Android Lottie實現(xiàn)中秋月餅變明月動畫特效代碼分享

3. 加載本地資源

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

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

利用Android Lottie實現(xiàn)中秋月餅變明月動畫特效代碼分享

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()");
    }
});

利用Android Lottie實現(xiàn)中秋月餅變明月動畫特效代碼分享

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

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

其中調(diào)用 playAnimation() 時會從動畫起始位置播放,而 resumeAnimation() 會從暫?;蛉∠麆赢嬐V刮恢貌シ?;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;
    }
}

利用Android Lottie實現(xiàn)中秋月餅變明月動畫特效代碼分享

小擴(kuò)展

1. 硬件加速器

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

android:hardwareAccelerated="true"
2. json 文件解析

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

利用Android Lottie實現(xiàn)中秋月餅變明月動畫特效代碼分享

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

利用Android Lottie實現(xiàn)中秋月餅變明月動畫特效代碼分享

到此,相信大家對“利用Android Lottie實現(xiàn)中秋月餅變明月動畫特效代碼分享”有了更深的了解,不妨來實際操作一番吧!這里是億速云網(wǎng)站,更多相關(guān)內(nèi)容可以進(jìn)入相關(guān)頻道進(jìn)行查詢,關(guān)注我們,繼續(xù)學(xué)習(xí)!

向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報,并提供相關(guān)證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI