在前幾篇中,我們瞭解了補間動畫、插值器和屬性動畫中的ValueAnimator
,這一篇,我們來了解下屬性動畫中的ObjectAnimator
ObjectAnimator
是通過指定屬性所對應的set
方法來改變的。比如,我們上面指定的改變rotation
的屬性值,
在做動畫時就會到指定控制元件(TextView)
中去找對應的setRotation()
方法來改變控制元件中對應的值。
在View
中有關動畫,總共有下面幾組set
方法:
//1、透明度:alpha
public void setAlpha(float alpha)
//2、旋轉度數:rotation、rotationX、rotationY
public void setRotation(float rotation)
public void setRotationX(float rotationX)
public void setRotationY(float rotationY)
//3、平移:translationX、translationY
public void setTranslationX(float translationX)
public void setTranslationY(float translationY)
//縮放:scaleX、scaleY
public void setScaleX(float scaleX)
public void setScaleY(float scaleY)
複製程式碼
rotationX
objectAnimator = ObjectAnimator.ofFloat(tvDemo, "rotationX", 0, 360, 0);
objectAnimator.setDuration(2000);
objectAnimator.start();
複製程式碼
alpha
objectAnimator = ObjectAnimator.ofFloat(tvDemo, "alpha", 0, 1, 0);
objectAnimator.setDuration(2000);
objectAnimator.start();
複製程式碼
translationX
objectAnimator = ObjectAnimator.ofFloat(tvDemo, "translationX", 0, 200, 0);
objectAnimator.setDuration(2000);
objectAnimator.start();
複製程式碼
scaleX
objectAnimator = ObjectAnimator.ofFloat(tvDemo, "scaleX", 0, 3, 1);
objectAnimator.setDuration(2000);
objectAnimator.start();
複製程式碼
擴充套件:
上面使用View自帶的set
函式所對應屬性的方法,如果以上方法滿足不了我們的需求怎麼辦?
我們只需要在我們的view中定義一個set
函式,與我們自定義的屬性相對應即可。
最後獻上原始碼 github
參考資料:自定義控制元件三部曲之動畫篇