前言
本篇文章就是在知乎回答的一個問題,這裏記錄下,以後看到我博客的朋友也可以看到。
曾經也同樓主一樣,對Android中的動畫不是很清楚,什麼幀,Tween,屬性等等,很多知識,也很瑣碎,後來覺得動畫這一塊是很多開發人員繞不過的吧,雖然每次通過google或者百度就可以基本滿足需求,但是總覺得太零散,太模糊。其實當時系統學習Android動畫還有一部分原因:將來成爲一個android組件開發工程師,如果想做出一些高性能,nice的動畫就必須對動畫的基礎知識有深入的理解,因此就打算系統的學習一下。經過一段時間的專業學習,android動畫的整體以及簡單的動畫實現都不是問題了,後來沒有再深入,是因爲自己的興趣方向變了。現在簡單分享一些自己的學習成果和心得吧。
個人整個學習過程中的產出的文章
- 動畫系列 - 傳統View動畫與Property動畫基礎及比較
- 動畫系列 - PropertyAnim 詳解
- 動畫系列 - PropertyAnim 實際應用
- 動畫系列 - ViewPager動畫
- Android 動畫基礎 (由 @Trinea 發起的codeKK 項目下的開源項目原理分析項目android-cn/android-open-project-analysis 二期中,很多分析項目涉及到了動畫,所以該篇主要是對PropertyAnim詳解和基礎篇中的一些知識進行整理,作爲二期的動畫公共知識,codeKK 絕對是超級棒的項目,大家可以多關注)
從傳統View動畫與Property動畫基礎及比較 以及Android 動畫基礎 這兩篇文章,你可以對android動畫總體有些瞭解,PropertyAnim 詳解這一篇則是專門介紹了3.0出現的屬性動畫,其中也涉及到了JakeWharton大神爲3.0之前實現的兼容庫NineOldAndroids。
通過ViewPager來實現動畫效果的方式越來越多,一些視差效果也確實很贊,比如雅虎天氣的視差效果,知乎導航界面中元素的視差,關於它們的實現原理,在 ViewPager動畫 這篇中有詳細的分析,其中也提到了GitHub上一些和ViewPager動畫類似的實現,也分析了它們之間的區別,具體可以參考文章。
PropertyAnim 實際應用主要介紹了一些簡單API的使用,亮點是其中介紹了很多GitHub 上的動畫項目,其中實現多數使用了NineOldAndroids兼容庫,可以作爲不錯的學習資料。
上面幾篇文章中都有非常詳細的介紹,就不多說了,因爲文章中對於一些概念,使用,原理介紹的確實太詳細了,現在想起來,當時鑽的確實有點深了,比如PropertyAnim 詳解這篇文章,對屬性動畫中的ValueAnimator,Evaluators,Interpolators的介紹以及TimeInterpolator和TypeEvaluator的比較等等,具體的可以參考文章。
這幾篇文章看下來,你應該對android動畫有一些更系統更深入的認識了。基本的動畫實現應該沒啥難度了。每篇文章的信息量很是很大的,因爲在學習過程中主要是通過大量的GitHub動畫項目,也參考了不少資料,在文章結尾處有提及。
進階
如果你還想進階,這裏再分享一些不錯的項目,這些項目都是在android動畫基礎上建立起來的,所以看他們的源碼,完全沒有難度.
首先推薦一個GitHub組織:Yalantis,該組織開源了很多特效的項目。很新穎,很有創意,絕對眼前一亮,可以作爲不錯的學習資料:
Yalantis
- Yalantis/GuillotineMenu-Android 銼刀效果,不過我看跟拍電影時的打板有點像
- Yalantis/Phoenix 很有創意的下拉動畫,“升起的太陽”
- Yalantis/Taurus · GitHub 也是下拉動畫,“滑翔機”
- Yalantis/Context-Menu.Android 菜單動畫,不過個人覺得貌似有點太炫技了
- Side-Menu 同樣是菜單動畫,不過加上了Reveal的轉場效果
- Yalantis/FlipViewPager.Draco 摺疊動畫
- Yalantis/Euclid 轉場動畫,感覺可以歸爲MaterialDesign設計風格
daimajia (代碼家)
- daimajia/AndroidViewAnimations 動畫集合,
- daimajia/AndroidImageSlider ViewPager動畫集合
- daimajia/AnimationEasingFunctions 定義了很多Evaluator,你也可以尋找自己的函數來實現更讚的動畫
很棒的紙飛機
race604/FlyRefresh 紙飛機,效果真是sweet,配上Blog,看看作者的思路和實現原理:FlyRefresh
關於我的幾篇動畫文章,如有不準確的地方,還望指正,希望對您和以後有興趣學習動畫的朋友有些幫助。
其它更多動畫相關學習資料或者不錯的開源庫後面補充吧,還是那句話,原理都一樣,腦洞不夠大,去Dribbble找找靈感吧。