2011年7月31日 星期日

[Android] Animation

動畫做法可分以下幾種方式:

* Tweened animation:
  • 通過對 view 不斷做圖像變換(平移、縮放、旋轉)產生動畫效果。
  • 預先在 .java or .xml 中定義一組動畫動作,此組動作可有變換類型、觸發時間、持續時間等,啟動後,便會執行這一連串的動作。
  • 動畫的執行速度由 interpolator 控制,ex: LinearInterpolator、 Accelerateinterpolator、DecelerateInterpolator。
  • 圖形變化是通過鏡射矩陣達成,每種變換都是一次矩陣運算。
  • 在 Android 中,Canvas 類中包含當前矩陣,使用 Canvas.drawBitmap (bmp, x, y, Paint) 繪製時,android 會先把 bmp 做一次矩陣運算,然後將運算的结果顯示在 Canvas 上。
  • 所以只需不断修改 Canvas 的矩陣並更新畫面,View 就會不停的做圖形變化而呈現動畫。


* frame-by-frame animation:順序播放事先做好的圖像,跟電影類似

* LayoutTransition: container 有新增/remove item 時會 animation



* android:duration="@android:integer/config_longAnimTime"
config_longAnimTime is just slightly less than a half second, and is long enough for most purposes.

* alpha:透明度效果
Translate:畫面轉換位置移動動畫效果

* z axis: 距離螢幕的距離
-z: zoomIn
+z: zoomOut

* y axis:
+y: right (逆時鐘)
-y: left (順時鐘)

* angle
-angle: 逆時鐘
+angle: 順時鐘
- -> + : 順時鐘
- -> - : 逆時鐘
+ -> + : 順時鐘
+ -> - : 逆時鐘

* action
onScroll: 拿
onFling: 丟


* Reference
- 分析android动画模块
Android中渐变动画演示(Tween Animation) - Android Studio - 青藤园
- anddev.org • View topic - Splash Fade, Activity Animations, overridePendingTransition

沒有留言:

張貼留言