android 屬性動畫(view普通使用 和 自定義view使用)
1、概述
普通的動畫主要是Animation 和 Animator(與5.0的切換動畫,介面共享元素動畫區分開)
Animation 分
TranslateAnimation 移動
scaleAnimation 縮放
RotateAnimation 旋轉
AlphaAnimation 透明度
另外幀動畫animation-list AnimationDrawable
Animator 屬性動畫 主要就是:ValueAnimator 和 ObjectAnimator
Animator 是Android 3.0 api11 後出來的,2.3的版本要相容要使用相容包
注意:用了相容包後,引用的動畫當然要用相容包裡的動畫
import com.nine...
2、原理
Animator 的原理就是在 一個時間間隔內,完成一個屬性值到另一個屬性值得變化(或者說一個屬性從a值到b值得變化) 預設時間間隔是250ms 預設幀率是10ms/幀 (實際專案中發現,裝置中對這個值有優化基本都是大於10ms,app應用程式碼中沒找到可以設定該值得有效api)
3、ObjectAnimator 與 ValueAnimator
其中 ObjectAnimatorextendsValueAnimator
ObjectAnimator 需要提供一個對應的屬性的 get set 方法 使用反射的原理 每次變化的載入
View 的常用的一些變化都可以直接用ObjectAnmator.ofFloat() 比如:
rotationX rotationY
translationX translationY
scaleX scaleY
alpha
ValueAnimator 不需要get set方法,使用AnimatorUpdateListener 監聽器 自己實現重新整理檢視。
另外的插值什麼的也沒什麼。就是根據轉換率 計算出一個屬性值。
如果屬性動畫作用在自定義view 重寫onDraw方法也是一樣的根據上述2原理,改變一個屬性值,
然後呼叫:invalidate() 方法 到onDraw 方法裡畫檢視