Animator 代表一个属性动画,但它只是一个抽象类,通常会使用它的子类:AnimatorSet、ValueAnimator、ObjectAnimator、TimeAnimator。
定义属性动画的 XML 资源文件能以如下三个元素中的任意一个作为根元素:
- <set>:它是一个父元素,用于包含其他<objectAnimator>、<animator>或<set>子元素,该元素定义的资源代表 AnimatorSet 对象;
- <objectAnimator>:用于定义 ObjectAnimator 动画;
- <animator>:用于定义ValueAnimator动画。
注意:属性动画的 XML 文件应该保存在 /res/animator 目录中。
下面是一个简单的示例:
自定义的 animator 资源文件的代码为:
<?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"
/>
我们的主布局文件的代码很简单,就是一个简单设置属性的空的 LinearLayout,其内容如下:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="@color/colorGray"
android:orientation="vertical"
android:id="@+id/container"
>
</LinearLayout>
主程序文件的代码如下所示:
package com.toby.personal.testlistview;
import android.animation.AnimatorInflater;
import android.animation.ObjectAnimator;
import android.content.Context;
import android.os.Bundle;
import android.support.v7.app.AppCompatActivity;
import android.view.View;
import android.widget.LinearLayout;
public class MainActivity extends AppCompatActivity {
final private static String TAG = "Toby_Test";
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
LinearLayout container = (LinearLayout) findViewById(R.id.container);
container.addView(new TestAnimationView(this));
}
public class TestAnimationView extends View {
public TestAnimationView(Context context){
super(context);
ObjectAnimator colorAnim = (ObjectAnimator) AnimatorInflater.loadAnimator(
MainActivity.this, R.animator.test_animator01);
colorAnim.setTarget(this);
colorAnim.start();
}
}
}
本示例的运行效果,各位可以自行运行测试,效果很惊艳耀眼,如果出现运行不了等问题,可以给我留言。本文参考文献:《疯狂Android讲义(第2版)》