ValueAnimator提供了三種默認支持的值類型,int、float和表示顏色的argb型。例如:html
ValueAnimator animation = ValueAnimator.ofFloat(0f, 1f); animation.setDuration(1000); animation.start();要獲得動畫發生過程當中的值須要給ValueAnimator設置一個監聽器ValueAnimator.AnimatorUpdateListener。
animation.addUpdateListener(new AnimatorUpdateListener() { public void onAnimationUpdate(ValueAnimator animator) { Float value = (Float) animator.getAnimatedValue(); } })這樣就能夠獲得整個動畫過程產生的中間值。
ValueAnimator animation = ValueAnimator.ofObject(new MyTypeEvaluator(), startPropertyValue, endPropertyValue); animation.setDuration(1000); animation.start();屬性動畫要對View起做用須要將每次改變的屬性值設置到相應的View上,上面提到ValuAnimator只負責中間值的計算,而沒有後面這個值的設置過程,爲了更方便地運用,ObjectAnimator這個類誕生了,它繼承了ValueAnimator,並在內部實現了設置到View屬性上的邏輯。
ObjectAnimator anim = ObjectAnimator.ofFloat(foo, "alpha", 0f, 1f); anim.setDuration(1000); anim.start();其中foo是屬性值所屬的一個具體對象,好比一個view,alpha是屬性名稱,ObjectAnimator要求必須有屬性名稱對應到set和get方法,如上面例子要求foo對應到類必須有setAlpha()和getAlpha()這兩個方法。對於View來講設置view的alpha值會觸發invalidate而重繪,所以就看到了連續的動畫效果。