一、插值器
我们都知道对于属性动画可以对某个属性做动画,而插值器(TimeInterpolator)在其中扮演了重要角色。
Interpolator的系统值有下面几个:
public interface
TimeInterpolator
android.animation.TimeInterpolator
Known Indirect Subclasses
AccelerateDecelerateInterpolator, AccelerateInterpolator, AnticipateInterpolator, AnticipateOvershootInterpolator, BounceInterpolator, CycleInterpolator, DecelerateInterpolator, Interpolator, LinearInterpolator, OvershootInterpolator
也就是:
AccelerateDecelerateInterpolator 在动画开始与介绍的地方速率改变比较慢,在中间的时候加速
AccelerateInterpolator 在动画开始的地方速率改变比较慢,然后开始加速
AnticipateInterpolator 开始的时候向后然后向前甩
AnticipateOvershootInterpolator 开始的时候向后然后向前甩一定值后返回最后的值
BounceInterpolator 动画结束的时候弹起
CycleInterpolator 动画循环播放特定的次数,速率改变沿着正弦曲线
DecelerateInterpolator 在动画开始的地方快然后慢
LinearInterpolator 以常量速率改变
OvershootInterpolator 向前甩一定值后再回到原来位置
下面通过一个例子形象的看一下这些插值器的效果。
1.activity_main.xml:
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent">
<ImageView
android:id="@+id/imageView"
android:layout_width="40dp"
android:layout_height="40dp"
android:layout_margin="10dp"
android:src="@drawable/ball" />
<Spinner
android:id="@+id/spinner"
android:layout_width="300dp"
android:layout_height="50dp"
android:layout_alignParentRight="true"></Spinner>
</RelativeLayout>
2.MainActivity.java:
package demo.androidwar.com.chazhiqi;
import android.animation.ObjectAnimator;
import android.os.Bundle;
import android.support.v7.app.AppCompatActivity;
import android.view.View;
import android.view.animation.AccelerateDecelerateInterpolator;
impo