ViewPropertyAnimator 视图属性动画

Android 为 View 的动画操作提供一种更加便捷的用法,那就是 ViewPropertyAnimator

一般情况下,让一个 TextView 从正常状态变成透明状态,会这样写:

ObjectAnimator animator = ObjectAnimator.ofFloat(textview, "alpha", 0f);  
animator.start();

使用 ViewPropertyAnimator 来实现同样的效果简单易懂

textview.animate().alpha(0f);

ViewPropertyAnimator 连缀用法 ,组合多个动画,设定时长,设置 Interpolator

textview.animate().x(500).y(500).setDuration(5000)  
        .setInterpolator(new BounceInterpolator());

注意点

  1. 整个 ViewPropertyAnimator 的功能都是建立在 View 类新增的 animate() 方法之上的,这个方法会创建并返回一个 ViewPropertyAnimator 的实例,之后的调用的所有方法, 设置的所有属性都是通过这个实例完成的

  2. 使用 ViewPropertyAnimator动画定义完成之后 ,动画就会 自动启动

    并且这个机制对于组合动画也同样有效,只要我们不断地连缀新的方法,那么动画就不会立刻执行,等到所有在 ViewPropertyAnimator 上设置的方法都执行完毕后,动画就会自动启动

    当然如果不想使用这一默认机制的话,我们也可以显式地调用 start() 方法来启动动画

  3. ViewPropertyAnimator 的所有接口都是使用连缀的语法来设计的,每个方法的返回值都是它 自身的实例 ,因此调用完一个方法之后可以直接连缀调用它的另一个方法,这样把所有的功能都串接起来,我们甚至可以仅通过一行代码就完成任意复杂度的动画功能

范例

我们写一个 demo 使用 ViewPropertyAnimator 来实现动画效果


  1. 创建一个 空的 Android 项目 cn.twle.android.ViewPropertyAnimator

  2. 修改 activity_main.xml

    <?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:orientation="vertical" >
    
        <TextView
            android:id="@+id/ms_textview"
            android:background="#ff0000"
            android:layout_width="64dp"
            android:layout_height="64dp"/>
    </LinearLayout>
    
  3. 修改 MainActivity.java

    package cn.twle.android.viewpropertyanimator;
    
    import android.support.v7.app.AppCompatActivity;
    import android.os.Bundle;
    import android.view.animation.BounceInterpolator;
    import android.widget.TextView;
    
    public class MainActivity extends AppCompatActivity {
    
        @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_main);
    
            TextView ms_textview = findViewById(R.id.ms_textview);
            ms_textview.animate().x(500).y(500).setDuration(5000)  
    .setInterpolator(new BounceInterpolator());
        }
    }
    

Android 基础教程

关于   |   FAQ   |   我们的愿景   |   广告投放   |  博客

  简单教程,简单编程 - IT 入门首选站

Copyright © 2013-2022 简单教程 twle.cn All Rights Reserved.