zoukankan      html  css  js  c++  java
  • 属性动画(Property Animation)资源

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

         下面介绍属性动画资源。

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

    • <set.../>:它是一个父元素,用于包含其他<objectAnimator.../>、<animator.../>或<set.../>子元素,该元素定义的资源代表AnimatorSet对象。
    • <objectAnimator.../>:用于定义ObjectAnimator动画。
    • <animator.../>:用于定义ValueAnimator动画。   

         定义属性动画的语法格式如下:

    <?xml version="1.0" encoding="utf-8"?>
    
    <set android:ordering=["together"|"sequentially"]>
        <set>
            <objectAnimator
                android:propertyName="string"
                android:duration="int"
                android:valueFrom="float|int|color"
                android:valueTo="float|int|color"
                android:startOffset="int"
                android:repeatCount="int"
                android:interpolator=""
                android:repeatMode=["repeate"|"reverse"]
                android:valueType=["intType"|"floatType"]/>
            <objectAnimator
                   android:duration="int"
                   android:valueFrom="float|int|color"
                   android:valueTo="float|int|color"
                   android:startOffset="int"
                   android:repeatCount="int"
                   android:interpolator=""
                   android:repeatMode=["repeat"|"reverse"]
                     android:valueType="intType"/>
        </set>
       <set>
           ...
       </set>
    </set>

    实例:不断渐变的背景色

       该实例将会使用属性动画来控制组件背景色不断改变。该实例所使用的属性动画资源文件如下。

       程序清单: esanimatorcolor_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>

    上面的代码定义了一个ObjectAnimator对象,接下来程序就可以通过属性动画来控制指定组件背景色不断改变。

    该实例的布局文件如下

    <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
        xmlns:tools="http://schemas.android.com/tools"
        android:orientation="vertical"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:id="@+id/container"
        >
    
    </LinearLayout>

    下面是该实例的Activity代码。

    package com.example.studyresources;
    
    import android.os.Bundle;
    import android.animation.AnimatorInflater;
    import android.animation.ArgbEvaluator;
    import android.animation.ObjectAnimator;
    import android.app.Activity;
    import android.content.Context;
    import android.view.Menu;
    import android.view.View;
    import android.widget.LinearLayout;
    
    public class AnimatorTest extends Activity {
    
        @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_animator_test);
            LinearLayout container=(LinearLayout)findViewById(R.id.container);
            //添加MyAnimationView组件
            container.addView(new MyAnimationView(this));
        }
    
        @Override
        public boolean onCreateOptionsMenu(Menu menu) {
            // Inflate the menu; this adds items to the action bar if it is present.
            getMenuInflater().inflate(R.menu.animator_test, menu);
            return true;
        }
        
        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();
                
            }
        }
    
    }

    上面的程序中粗体字代码使用AnimatorInflater工具类加载了指定动画资源文件、将该动画资源文件转换为ObjectAnimator对象。接下来程序对MyAnimationView本身应用该动画,将可以看到该组件的背景色不断变化,如图6.8所示。

     

  • 相关阅读:
    重写/覆盖基类的事件
    关于“日志”的输出控制
    WPF中DataGrid垂直滚动条滚动后导致每行CheckBox选择错乱
    WPF窗体应用程序开发
    C# 操作自定义config文件
    WPF绑定数据源之RelativeSource
    C# http请求 设置代理(标题可以作为搜索关键字)
    前端加载特效
    实现不同的项目,用不同的git 账号提交
    Casbin 使用记录
  • 原文地址:https://www.cnblogs.com/wolipengbo/p/3439111.html
Copyright © 2011-2022 走看看