原文鏈接 Android Animation Advanced Tricks
前面的文章介紹了動畫的基本使用方法汤善,本文來聊一聊涉及到動畫的高級技巧叼耙,以及一些非常優(yōu)質的學習資源和動畫三方庫和框架发乔。
[圖片上傳失敗...(image-993c4f-1692617804681)]
頁面之間的過渡動畫
常規(guī)的動畫都是針對某一頁面上的某個元素做動畫,這個相對簡單守屉,之前的文章講了很多待诅。但有時候頁面與頁面之間也是需要過渡動畫的,這個可以加強切換的視覺體驗,但最好要注意整個應用內的風格統(tǒng)一奔害,不能A到B是一種切換樣式,B到C卻是另外一種地熄。
主要有兩類华临,一是Activity之間的切換,二是布局之間的切換端考。
Activity之間的切換動畫
因為Activity的創(chuàng)建與啟動以及它的Window的創(chuàng)建和顯示都是由Frameworks來控制的雅潭,甚至于Activity里面的布局何時加載也是由系統(tǒng)決定的,所以對于Activity之間的切換嚴重依賴于Frameworks跛梗,而不同版本的安卓寻馏,支持的情況還不一樣。
傳統(tǒng)的做法
這個是針對 于所有安卓 版本都可以使用的方法核偿,也是最簡單的方式诚欠,就是使用Activity#overridePendingTransition方法。
這個方法并不難,具體如何使用可以參考其文檔轰绵,以及這篇文章粉寞,講的都比較清楚。
使用Transition
在Android 4.4時左腔,系統(tǒng)中加入了一個叫做Transition的東西唧垦,專門用于頁面之間的切換的,但也僅是限于同一個窗口(也即同一個Activity內)的ViewGroup液样。在Android 5.0時又把Activity之間的切換提供了支持振亮,對于5.0以上的版本可以使用這個框架來實現切換,會比傳統(tǒng)的做法都要專業(yè)一些鞭莽。
具體可以參看官方教程坊秸,以及這篇教程和這篇文章,講解的都相當好澎怒。
布局之間的過渡切換
這里的布局就是指除Activity以外的褒搔,比如從一個ViewGroup切換到另外一個ViewGroup。其實Fragment本質上就是一個ViewGroup喷面,所以也包含在內星瘾。
在Android 4.4 (Kikat API 19),加入了Transition frameworks惧辈,專門用于解決場景切換琳状,主要是通過Scene對象和Transition對象。Transition對象定義具體針對 哪個ViewGroup做什么樣的動畫咬像,而Scene對象定義了ViewGroup的某一種狀態(tài)算撮,如漸變進入生宛,那么漸變前是一個Scene县昂,完全可見后又是一個Scene,而漸變的過程則叫Transition陷舅。
[圖片上傳失敗...(image-33d80a-1692617804681)]
可以參看官方文檔倒彰,以詳細了解如何使用transition。
復雜動畫的實現邏輯
動畫是一個非常復雜且精深的領域莱睁,千萬不要說做個UI很容易待讳,或者說寫個動畫很容易,要想做好動畫需要很深的功底仰剿,不但需要對動畫框架有深入的了解创淡,也要對整個視覺GUI有深入的理解,并且需要良好的數學與物理知識南吮。
復雜的動畫的復雜度體現在兩個方面琳彩,一個是整體上看起來復雜,也就是是很多不同的動畫的組合;另外一個是具體的某個屬性復雜露乏,如復雜的路徑碧浊,復雜的時間變化或者復雜的形變。分開說瘟仿。
看起來復雜的動畫
這一般是涉及眾多的動畫的組合箱锐,整體表現上看起來特別復雜。就比如說電商可能會有一個購物筐劳较,里面往外飛各種商品的動畫驹止。對于這種就是要把它拆解,拆解開來后观蜗,其實并不復雜幢哨。
[圖片上傳失敗...(image-a72d4c-1692617804681)]
- 購物車:可以是漸變,不斷的從透明變到不透明嫂便±塘或者干脆不做動畫
- 商品:預定義一組商品,每次隨機選擇一個毙替,再選擇隨機的位置岸售,然后從底下往上飛(或者從上往下飛),再設置一個隨機的速度厂画,也可以加上旋轉
這樣拆解開來就不復雜了凸丸。
復雜的變幻
這里就要涉及一些數學 和物理知識了,比如用一些特別的曲線袱院,特殊的曲面屎慢,特殊的形變等。
優(yōu)秀的動畫的設計范例
這里就不得不得提到大名頂頂的Dribbble了忽洛,這里有相當優(yōu)秀的設計資源腻惠,其中也有很多動畫設計,可以嘗試著去實現一下欲虚,都很有挑戰(zhàn)集灌。
優(yōu)秀的動畫相關資源
還有一些資源,特別是開源的庫复哆,也非常值得學習和研究和使用欣喧。
MotionLayout
這個并不是三方的,而是官方AndroidX中的梯找,相當的強大唆阿,當然使用起來也略復雜。具體使用方法可以參考 官方教程和這篇文章锈锤。
The Top 27 Android Animation Open Source Projects
這里是一個集合驯鳖,里面列出一些優(yōu)秀的動畫相關的開源庫饰躲,都相當的棒。
Android View Animations
有一些針對View的非常炫酷的特效臼隔,如抖動嘹裂,縮放和旋轉等。它是受一個水果上面的動畫庫的激發(fā)摔握。
Material-Animations
主要是介紹如何使用Transition frameworks的寄狼。
Lottie
可以把設計軟件Adobe After Effects直接轉成動畫。
一些插值器
專門用于加載動畫
里面有各種神奇的加載特效氨淌,非常棒泊愧。是一個前端CSS加載特效的Android上的實現。
教程的示例
這是一個教程集錦盛正,里面也包含各種示例删咱,是一個相當不錯的學習資源。
另外一個教程和示例
與上面的類似豪筝,也是一個集教程與實例在一起的項目痰滋。
Android Animation Detailed Tutorials
一個項目的合集。