如何學習 Android Animation?

Android 開發者網站 搜索『animation』,經過『blog』過濾搜索結果,能夠得到不少博文,我只摘錄了前兩頁,並把它們分紅了兩類:html

動畫能夠作成什麼樣子(第1類)

下述幾篇博文經過以下3個方面向開發者展現『動畫』:android

  • 給出一些指導原則,闡述爲何要如此作動畫,或者這樣的動畫有什麼好處;ios

  • 給出 GIF 動圖,直觀地展現動畫是什麼;git

  • 給出實現這種動畫的代碼片斷(關鍵類、方法、資源文件)或者實現思路;github

這很是棒,能夠幫助咱們很快創建動畫的印象,瞭解某個名詞表明的動畫是什麼樣子,應該怎麼去實現。並且代碼片斷不少是從開源項目中摘錄的,意味着咱們能夠調試這些動畫。segmentfault

2014-08-05 Material design in the 2014 Google I/O app

這篇文章的做者是 Google I/O app 的主設計師,而 I/O app 的做用之一是提供 Android 設計和開發的最佳實踐(it serves as a reference demo for Android design and development best practices)。文中特別提到了最喜好的 app 細節之一就和動畫有關:浮動操做按鈕(floating action button)的狀態根據「用戶是否會出席當前頁面的這個會議」而改變,狀態改變時伴隨着動畫。文中詳細地講到了動畫實現的步驟,雖未羅列代碼,但能夠從 github-google-io-app 獲取源碼,瞭解實現細節。
clipboard.pngapp

2014-10-24 Implementing Material Design in Your Android app

這篇文章一半篇幅在講『Motion』:當用戶觸摸屏幕時,全部的變化應從接觸點開始向外輻射,創建畫面過渡時的關聯和連續性,這些必須是有意義且友好的。Materials 經過這種方式向用戶提供反饋,使用戶注意到變化,從而幫助到用戶。(to focus attention, establish spatial relationships and maintain continuity. Materials respond to touch to confirm your interaction and all changes radiate outward from your touch point. All motion is meaningful and intimate, aiding the user’s comprehension.)。分別介紹了:ide

  • Activity & Fragment Transitions:在兩個頁面間平滑過渡,常見的場景是從列表視圖切換到詳情視圖;佈局

  • Ripples:一種波紋效果,波紋從觸點開始向外擴散直至填充整個view,點擊繼承自 Theme.Material 的 button 就能夠看到這種效果;學習

  • StateListAnimator:View 狀態改變時的動畫;

  • Circular Reveal:一個圓形扇面從觸點開始向外輻射直至填充整個view,這種過渡效果經常使用於展現新的內容;

  • Interpolators:插值器定義了動畫改變的速率,好比容許 alpha, scale, translate, rotate 加速、減速、重複等。好比插值器 fast_out_slow_in, 加速開始、逐漸降速直至結束,這樣的動畫效果使得對象在整個運動軌跡中,在接近終點的位置耗費較多時間。而根據不一樣的場景,選擇不一樣的插值器或者自定義插值器,就可使動畫更具意義,擺脫千篇一概的印象。

2015-05-28 Announcing the Material Design Showcase and Awards

這篇文章先回顧了14年6月首次公佈 material design 時的願景『a single design system that can work across platforms and brands』。但這些願景和 material design 的設計思想全是經過『假想中的 App』 來演示的。而後轉眼到了15年5月,也就是這篇文章發佈的日期,世界已經發生了變化,不少 App 接受並經過 Android 5.0 SDK 和 AppCompat 實現了material design。

所以特別收集了 18 個符合 material design 的 app 向衆人展現,其中 6 個 app 因爲在 material design 某一方面作的特別出色而被授予了第一屆 Material Design Awards. 因動畫效果而獲獎的是 Tumblr: Delightful Animation.
動畫效果能夠作成什麼樣子,官方告訴你去看看 Tumblr.

2015-06-16 More Material Design with Topeka for Android

這篇文章是開源 Android App 項目 Topeka for Android 的說明文檔,用來演示 material design 的設計原則,幫助開發者在不一樣的平臺上創建統一的用戶體驗。(原文:It demonstrates that the same branding and material design principles can be used to create a consistent experience across platforms.)

Topeka 是一個趣味問答應用,包含9個種類的問題,以網格佈局呈現,點擊某個格子進入回答問題的頁面,一個問題回答完後就切換到下一個問題,有選擇題填空題等各類類型的問題(對應各類UI組件)。包含了不少動畫元素:

  • Transitions: 很棒的 Activities 轉場動畫(great transitions between Activities);
    clipboard.png

  • Animations: 答題時有精心編排的動畫,一旦答題就彈出一個浮動操做按鈕,點擊按鈕提交答案就進入了下一個問題,這時會根據回答正確與否播放對應的動畫;
    clipboard.png

  • Property Animations:爲 circular reveal 增長顏色漸變的動畫(從FAB的顏色變成透明)以營造出消融的效果(Adding a color animation from the FAB's color to transparent creates a dissolve like effect to the circular reveal)。
    (上上一個gif包含這種效果,但太快了看不出效果,下面這個gif延長了時間,爲了突出動畫)clipboard.png

概述動畫相關的類和接口(第2類)

前兩篇文章先討論了一個問題,已經有了能實現 move, scale, rotate, and fade 這些視圖動畫的 android.view.animation爲何還要在 3.0 引入新 APIs?帶來了哪些新特性?而後進一步展現了這些新特性的強大便利之處。第三篇文章討論了 4.0 在 3.0 核心特性基礎上增長的一小點兒改善。(These articles discuss the new APIs added in 3.0 that make animation in Android easier, more powerful, and more flexible. The Android 4.0 improvements discussed below are small additions to these core facilities.)

這幾文章排在搜索結果的前幾位,可見其重要程度,做者是 Chet Haase,一個致力於圖形和動畫研究的 Android 開發者,能夠從他的 我的博客graphics-geek.blogspot.com 閱讀更多相關主題的博文。

須要說明的是 HONEYCOMB 3.0( about versions android-3.0 highlights ) 發佈於 2011.02,引入了New animation framework;3.1 發佈於 2011.05;ICE_CREAM_SANDWICH 4.0 發佈於 2011.11。而這幾篇博文的發佈時間與相應的系統版本發佈時間一致,並且其中兩篇文章在 Android API Guides: Animation and Graphics 頁面有推薦,因此真的應該多關注和學習官方開發者的文章

2015-04-21 Android Support Library 22.1
這篇文章介紹了 Android support library 22.1 版本帶來的新特性。與動畫有關的內容是:Lollipop android.R.interpolator 新增的幾個 Interpolators 已經在 Support V4 獲得支持。

通讀完上述幾篇文章後,咱們就可以瞭解到『動畫能夠作成什麼樣子』、『實現這些動畫的類和接口,及技術的演變歷史』。是否是有種高屋建瓴、指揮若定的感受?個人感受是,不至於淹沒於 Android 文檔的海洋中,被巨多的技術細節打的暈頭轉向。並且我以爲學習 demo 時在精不在多,因此應該先從官方的 sample 以及上述官方文章中的 demo 入手,同時查閱 API guides:

Android Training & Guides

Android 開發者網站提供的 Training:

Android 開發者網站提供的 API Guides:

有不少途徑獲取官方 sample:Welcome to code samples for Android developers,好比直接在 Android Studio 中導入:

clipboard.png

學習路線圖

非官方的博文也有很棒的,好比下面這一篇:

Exploring Meaningful Motion on Android ,這是譯文 探索安卓中有意義的動畫 ,這是文章對應的開源項目 hitherejoe/animate ,1280顆星。

相似的一個開源項目 lgvalle/Material-Animations,3840顆星。

但若是須要系統地學習某塊知識點,從第一手和權威的角度講,官網及其博客是開發者的不二選擇。不要介意在閱讀英文文檔上花費的時間,這些都是值得的。看不懂的再查閱相關文章相佐證。

因此我花了大概三天時間,整理出這篇文章,制定了個人學習路線圖:

  1. 通讀官方 blog(上述列出的);

  2. 學習官方 training(上述列出的);

  3. 學習 GitHub 高星(感興趣的)項目(好多人推薦了好多很是好的項目);

  4. 閱讀其它高質量的 blog 查缺補漏(善用 google);

Go! Go! Go!

版權聲明:《如何學習 Android Animation?》由 WeiYi.Li 在 2016年01月23日寫做。著做權歸做者全部。商業轉載請聯繫做者得到受權,非商業轉載請註明出處。
文章連接:http://li2.me/2016/01/how-to-learn-andro...

相關文章
相關標籤/搜索