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());
注意点
-
整个
ViewPropertyAnimator
的功能都是建立在View
类新增的animate()
方法之上的,这个方法会创建并返回一个ViewPropertyAnimator
的实例,之后的调用的所有方法, 设置的所有属性都是通过这个实例完成的 -
使用
ViewPropertyAnimator
将 动画定义完成之后 ,动画就会 自动启动并且这个机制对于组合动画也同样有效,只要我们不断地连缀新的方法,那么动画就不会立刻执行,等到所有在
ViewPropertyAnimator
上设置的方法都执行完毕后,动画就会自动启动当然如果不想使用这一默认机制的话,我们也可以显式地调用
start()
方法来启动动画 -
ViewPropertyAnimator
的所有接口都是使用连缀的语法来设计的,每个方法的返回值都是它 自身的实例 ,因此调用完一个方法之后可以直接连缀调用它的另一个方法,这样把所有的功能都串接起来,我们甚至可以仅通过一行代码就完成任意复杂度的动画功能
范例
我们写一个 demo 使用 ViewPropertyAnimator
来实现动画效果
-
创建一个 空的 Android 项目
cn.twle.android.ViewPropertyAnimator
-
修改
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>
-
修改
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()); } }