用 ConstraintLayout 和 ConstraintSet 實現 Android 關鍵幀動畫

簡評:話說現在 Google 的 Android 視頻里都是用 Kotlin 做示例了啊。

首先,什麼是關鍵幀動畫(keyframe animations)?

簡單的說就是給出兩個變化前後的關鍵狀態,然後中間的變化由程序自動實現。這裡就根據 Android Developers 的新視頻,介紹下怎麼通過 ConstraintLayout 和 ConstraintSet 實現類似下面這樣的關鍵幀動畫(最少只需要四行代碼)。

首先,在初始布局文件中將要動畫展示的 TextView 先移出屏幕,使得圖片覆蓋整個屏幕。所有控制項的屬性(比如字體大小、顏色等)都可以直接在初始的布局文件中設置。

初始布局

而表示最終狀態的布局文件可以只定義最後各控制項的位置。

最終布局

之後,由 TransitionManager 計算由初始布局變化到最終布局的路徑,並創建流暢的動畫。

// Activity.ktval constraintSet = ConstraintSet()constraintSet.clone(this, R.layout.detail)TransitionManager.beginDelayedTransition(myView) // myView: 當前視圖 ConstratintLayout 的 idconstraintSet.apply(myView)

當然 TransitionManager 默認實現的動畫是勻速的,我們可以通過自定義 transition 來自定義動畫。比如這樣:

val transition = ChangeBounds()transition.interpolator = AnticipateInterpolator(1.0f)TransitionManager.beginDelayedTransition(constraint, transition)

是不是很簡單呢。: )

視頻(Youtube):Keyframe Animations with ConstraintLayout and ConstraintSet

日報擴展閱讀:

  • 使用 AsyncListUtil 優化 RecyclerView

推薦閱讀:

Flyme 6 同時基於安卓 5.1 和安卓 6.0 在編程方面不會更難嗎?
【編程之外】從《海賊王》的視角走進BAT的世界
C++筆記 · C++關鍵字 - const

TAG:Android | Android开发 | 编程 |