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 kongyeeku@163.com
* @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();
}
}
}