属性动画(Property Animation)资源

Animator 代表一个属性动画,但它只是一个抽象类,通常会使用它的子类:AnimatorSet、ValueAnimator、ObjectAnimator、TimeAnimator。
定义属性动画的 XML 资源文件能以如下三个元素中的任意一个作为根元素。
  • <set.../>:它是一个父元素,用于包含其他<objectAnimator.../>、<animator.../>或 <set.../>子元素,该元素定义的资源代表 AnimatorSet 对象。
  • <objectAnimator.../>:用于定义 ObjectAnimator 动画。 
  • <animator.../>:用于定义 ValueAnimator 动画。
实例:不断渐变的背景色
main.xml
<?xml version="1.0" encoding="utf-8"?>

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"

    android:orientation="vertical"

    android:layout_width="match_parent"

    android:layout_height="match_parent"

    android:id="@+id/container"

    >

</LinearLayout>
color_anim.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="#FF8080"

    android:valueTo="#8080FF"

    android:repeatCount="infinite"

    android:repeatMode="reverse"

    android:valueType="intType">

</objectAnimator>
AnimatorTest.java
package org.crazyit.res;



import android.animation.AnimatorInflater;

import android.animation.ArgbEvaluator;

import android.animation.ObjectAnimator;

import android.app.Activity;

import android.content.Context;

import android.os.Bundle;

import android.view.View;

import android.widget.LinearLayout;



/**

 * Description:

 * <br/>site: <a href="http://www.crazyit.org">crazyit.org</a>

 * <br/>Copyright (C), 2001-2014, Yeeku.H.Lee

 * <br/>This program is protected by copyright laws.

 * <br/>Program Name:

 * <br/>Date:

 * @author  Yeeku.H.Lee [email protected]

 * @version  1.0

 */

public class AnimatorTest extends Activity

{

    @Override

    public void onCreate(Bundle savedInstanceState)

    {

        super.onCreate(savedInstanceState);

        setContentView(R.layout.main);

        LinearLayout container = (LinearLayout)

            findViewById(R.id.container);

        // 添加MyAnimationView组件

        container.addView(new MyAnimationView(this));

    }



    public class MyAnimationView extends View

    {

        public MyAnimationView(Context context)

        {

            super(context);

            // 加载动画资源

            ObjectAnimator colorAnim = (ObjectAnimator) AnimatorInflater

                .loadAnimator(AnimatorTest.this, R.animator.color_anim);

            colorAnim.setEvaluator(new ArgbEvaluator());

            // 对该View本身应用属性动画

            colorAnim.setTarget(this);

            // 开始指定动画

            colorAnim.start();

        }

    }

}
 

你可能感兴趣的:(animation)