美文网首页Android 成长笔记
Android 资源简介(六) Property Animati

Android 资源简介(六) Property Animati

作者: 赵者也 | 来源:发表于2017-04-07 19:25 被阅读2次

    Animator 代表一个属性动画,但它只是一个抽象类,通常会使用它的子类:AnimatorSet、ValueAnimator、ObjectAnimator、TimeAnimator。

    定义属性动画的 XML 资源文件能以如下三个元素中的任意一个作为根元素:

    1. <set>:它是一个父元素,用于包含其他<objectAnimator>、<animator>或<set>子元素,该元素定义的资源代表 AnimatorSet 对象;
    2. <objectAnimator>:用于定义 ObjectAnimator 动画;
    3. <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版)》

    相关文章

      网友评论

        本文标题:Android 资源简介(六) Property Animati

        本文链接:https://www.haomeiwen.com/subject/owzhattx.html