【Android 動畫】動畫詳解之屬性動畫(五)

歡子發表於2019-02-26

在前幾篇中,我們瞭解了補間動畫、插值器和屬性動畫中的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();
複製程式碼

20181224_163057.gif

alpha

  objectAnimator = ObjectAnimator.ofFloat(tvDemo, "alpha", 0, 1, 0);
                objectAnimator.setDuration(2000);
                objectAnimator.start();
複製程式碼

20181224_163125.gif

translationX

 objectAnimator = ObjectAnimator.ofFloat(tvDemo, "translationX", 0, 200, 0);
                objectAnimator.setDuration(2000);
                objectAnimator.start();
複製程式碼

20181224_163205.gif

scaleX

 objectAnimator = ObjectAnimator.ofFloat(tvDemo, "scaleX", 0, 3, 1);
                objectAnimator.setDuration(2000);
                objectAnimator.start();
複製程式碼

20181224_163226.gif

擴充套件:

上面使用View自帶的set函式所對應屬性的方法,如果以上方法滿足不了我們的需求怎麼辦? 我們只需要在我們的view中定義一個set函式,與我們自定義的屬性相對應即可。

最後獻上原始碼 github

參考資料:自定義控制元件三部曲之動畫篇

你的認可,是我堅持更新部落格的動力,如果覺得有用,就請點個贊,謝謝

相關文章