1. 程式人生 > >通過定義屬性動畫資源Property Animation來實現背景色的不斷變化

通過定義屬性動畫資源Property Animation來實現背景色的不斷變化

Animator是一個抽象類,他本身就代表了一個屬性動畫,它擁有
AnimatorSet,ValueAnimator,ObjectAnimator,TimeAnimator等子類,定義屬性動畫的XML資原始檔可以用以下三個元素做為根元素。
分別為

  • < set…/>
  • < objectAnimator…/>
  • < animator…/>
    而現在我們就通過自我動手實踐來為自己的應用增加一個不斷變化的背景色來增加應用的動畫效果。
    首先請先看下動畫效果。
    不斷變化的背景色
    要實現這樣的功能,我們可以首先定義一個屬性動畫XML資原始檔/res/animator/my_animator.xml
<?xml version="1.0" encoding="utf-8"?>
<objectAnimator xmlns:android="http://schemas.android.com/apk/res/android"
    android:propertyName="backgroundColor"
    android:duration="3000"
    android:valueFrom="#00ff00"
    android:valueTo="#ff00ff"
    android:repeatCount="infinite"
    android:repeatMode
="reverse" android:valueType="intType">
</objectAnimator>

接下來就在MainAcitity中自定義一個View類來應用此動畫效果。

setContentView(R.layout.activity_main);
        LinearLayout container = (LinearLayout) findViewById(R.id.container);
        //往container新增MyAnimationView自定義控制元件
        container.addView(new
MyAnimView(this));

自定義的View類如下圖所示,acitivity_main.xml太簡單了,不用加其他的控制元件,就不展示了。

public class MyAnimView extends View {
        public MyAnimView(Context context){
            super(context);
            //往自定義的控制元件載入動畫資源
                ObjectAnimator objectAnimator =(ObjectAnimator) AnimatorInflater.loadAnimator(MainActivity.this,R.animator.my_animator);
            objectAnimator.setEvaluator(new ArgbEvaluator());
            //對MyAnimationView本身應用此屬性動畫
            objectAnimator.setTarget(this);
            //開始動畫
            objectAnimator.start();
        }
    }