1. 程式人生 > >android 屬性動畫(view普通使用 和 自定義view使用)

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 方法裡畫檢視