前言
在App中添加一些動畫效果暑劝,會給用戶耳目一新铜邮,眼前一亮的感覺柴墩,讓APP顯的高端大氣上檔次忙厌,因此開發(fā)項目的過程中能夠實現(xiàn)一些常見的動畫效果還是很有必要的,Android本身提供了豐富的動畫API江咳,方便我們實現(xiàn)炫酷的動畫效果。
先放上幾張實現(xiàn)的效果圖:
閃屏頁 | 引導頁 | 汽車之家 |
---|---|---|
圖片瀏覽 | 屬性動畫 | 京東到家 |
---|---|---|
正文
逐幀動畫(Frame Animation)
一幀一幀進行播放哥放,它的原理與Gif類似歼指,按序播放一組預先定義好的圖片序列,如:
<?xml version="1.0" encoding="utf-8"?>
<animation-list android:oneshot="false" xmlns:android="http://schemas.android.com/apk/res/android">
<item android:duration="100" android:drawable="@drawable/loading01" />
<item android:duration="100" android:drawable="@drawable/loading02" />
<item android:duration="100" android:drawable="@drawable/loading03" />
<item android:duration="100" android:drawable="@drawable/loading04" />
<item android:duration="100" android:drawable="@drawable/loading05" />
<item android:duration="100" android:drawable="@drawable/loading06" />
<item android:duration="100" android:drawable="@drawable/loading07" />
<item android:duration="100" android:drawable="@drawable/loading08" />
<item android:duration="100" android:drawable="@drawable/loading09" />
<item android:duration="100" android:drawable="@drawable/loading10" />
<item android:duration="100" android:drawable="@drawable/loading11" />
<item android:duration="100" android:drawable="@drawable/loading12" />
</animation-list>
- android:oneshot 是否只播放一次
- android:duration 每一幀播放時長
- android:drawable 每一幀對應的圖片
補間動畫(Tween Animation)
動畫類型 | XML配置方式 | Java代碼實現(xiàn)方式 |
---|---|---|
漸變透明度動畫 | alpha | AlphaAnimation |
縮放動畫 | scale | ScaleAnimation |
旋轉動畫 | rotate | RotateAnimation |
平移動畫 | translate | TranslateAnimation |
屬性動畫(Property Animation)
直接更改View 的屬性來實現(xiàn)的動畫甥雕。
工作原理:在一定時間間隔內踩身,通過不斷調用set方法對值進行改變,并不斷將該值賦給對象的屬性社露,從而實現(xiàn)該對象在該屬性上的動畫效果
轉場動畫 (Transition Animation)
Google在Android 5.0之后推出的一種動畫效果挟阻,就是以某種方式從一個場景以動畫的形式過渡到另一個場景,可以參考Material-Animations峭弟,常用于點擊列表頁中的圖片跳轉到大圖或由列表頁跳轉到詳情頁
Lottie動畫
Lottie 是 Airbnb推出的一套跨平臺的動畫完整解決方案附鸽,它能夠幫助開發(fā)者直接加載json格式的文件在 iOS、Android 和 React Native之上瞒瘸,實現(xiàn) 100% 與設計稿相同的動畫效果坷备,而無需關心中間的實現(xiàn)細節(jié)。設計師只需要使用 After Effectes 設計出動畫之后情臭,通過使用 Lottie 提供的Bodymovin插件將設計好的動畫導出成json格式的文件交付給開發(fā)即可完成省撑。 Lottie網站 lottie-android
Tgs動畫
跨平臺的即時通信軟件Telegram推出的新的Sticker貼紙格式,這個全新的 Sticker 貼紙格式為 .tgs俯在,其實就是基于Lottie json文件改造而來的一種格式
GIF動畫
GIF(Graphics Interchange Format)是由CompuServe公司開發(fā)的一種圖像文件格式竟秫,可以將多幅圖像保存到一個圖像文件,展示的時候將多幅圖像數(shù)據逐幀讀出并顯示到屏幕上跷乐,從而形成動畫效果肥败。在Android中播放GIF通常有以下幾種方式:
使用Android SDK中自帶的android.graphics.Movie類(已過時)- 使用Glide,fresco等圖片加載類庫劈猿,Glide支持加載本地和網絡上的GIF圖片
- 使用giflib類庫在native層解碼GIF拙吉,使用FrameSequenceDrawable的雙緩沖機制進行繪制展示GIF中的每一幀圖像
- 使用android-gif-drawable類庫,其底層也是使用giflib進行GIF解碼
GitHub
https://github.com/kongpf8848/Animation