Use LottieAnimationView in Android
想要美美的動畫?
用 adobe的系列產品 就可以做出很多很棒的動畫。AI + AE 再藉由 bodymovin 轉檔產出 json 格式後,
就可以藉由 LottieAnimationView 來顯示。
在這邊關於轉出的檔案會有因爲原先實作的工具而產生差異,
有時候會因此而無法順利的顯示,
此時可以參考 bodymovin的格式介紹。
直接修改出問題的部分。
怎麼顯示在Android裡?
在xml就這樣直接用 (將要用到的 json file 放到 assets 這個資料夾下)<com.airbnb.lottie.LottieAnimationView android:id="@+id/..." android:layout_width="100dp" android:layout_height="100dp" app:lottie_rawRes="@raw/hello_world" <!--or--> app:lottie_fileName="hello_world.json" <!--Loop indefinitely--> app:lottie_loop="true" <!--Start playing as soon as the animation is loaded--> app:lottie_autoPlay="true"/>
也可以在程式碼裡控制
lottieAnimView.setAnimation(FileName+".json"); lottieAnimView.playAnimation();
轉出來的圖顯示不如預期?
我自己遇到的是用 bodymovin 轉檔出來後,不知道為什麼路徑的邊 stroke 的寬度輸出成10。
顏色也沒有被順利輸出。
這時候就可以採取上方提到的找出奇怪的部分直接改值。
主要就是從 nm 的名稱找到特定層設定的部分,
再去看你懷疑的部分( color / width 之類的 )會比較容易找到問題!
像這樣確認完在要改的屬性元件
"nm":"Fill 1" -> "c":{"a":0,"k":[1,1,1,1] 改這個顏色 現在是白色
再分享一個,這邊我在找的時候是用 Android Studio plugin Json Parser 來看輸出原文,
再用 finder 的功能,直接找關鍵字去調整值。
怎麼動態調整畫面?
如果你有需要針對不同主題換色,或是用其他動態變化,可以看看Lottie使用動態變換的介紹簡單的換色 (要注意這是新版的 api 用法 Lottie 2.5.0+)
tmp.addValueCallback( new KeyPath("Shape Layer","Rectangle","Fill"), LottieProperty.COLOR_FILTER, new LottieValueCallback<>( new SimpleColorFilter(
ContextCompat.getColor(context, R.color.red))));
關於 KeyPath 是指要修改的屬性在 json 檔案的解析路徑。
就上面可以知道原檔是在 Shape Layer 這個圖層裡的 Rectangle 方形這個物件,然後我要調整的是這個物件的顏色,所以針對屬性填滿 Fill 用 ColorFilter 來達成我要的效果。
關於不同屬性有他自己獨有支援的部分。這個地方可以仔細對照上面 Lottie使用動態變換的介紹 的 Animatable Properties 部分。這個功能確實強大,只要是有支援的屬性都可以針對當下的變動再調整,可以說這個擴充使的原本的動畫又更有調整彈性了~
* 順帶一提我使用的是支援 androidx 的 Lottie 2.8.0
沒有動畫原檔?
下面這篇文章可以稍微窺探設計師怎麼做動畫:AE 爆炸動畫製作的介紹
沒有人做動畫也可以自己試試,或是上 LottieFiles 直接找適用的動畫。
希望大家都可以用上美美的動畫啦~~
留言
張貼留言