遇到一個項目需求,想讓動畫變得更活潑一點,於是想到了動畫屬性中的Interpolator,寫了基本例子測試一下Android提供給我們現成的加速器的效果:
效果 | 代碼中方法 | xml中屬性 |
---|---|---|
越來越快 | AccelerateInterpolator() | @android:anim/accelerate_interpolator |
越來越慢 | DecelerateInterpolator() | @android:anim/decelerate_interpolator |
先快后慢 | AccelerateDecelerateInterpolator() | @android:anim/accelerate_decelerate_interpolator |
先后退一小步然后向前加速 | AnticipateInterpolator() | @android:anim/anticipate_interpolator |
快速到達終點超出一小步然后回到終點 | OvershootInterpolator() | @android:anim/overshoot_interpolator |
到達終點超出一小步然后回到終點 | AnticipateOvershootInterpolator() | @android:anim/anticipate_overshoot_interpolator |
彈球效果,彈幾下回到終點 | BounceInterpolator() | @android:anim/bounce_interpolator |
均勻速度 | LinearInterpolator() | @android:anim/linear_interpolator |
在實現動畫的非線性變化的方法中,常用的一種是為動畫添加插值器以改變視圖的屬性值,從而實現理想的動畫效果。Interpolator使用相對簡單,下面就只給出一些提供的插值器的默認效果。
在代碼中:直接調用AccelerateInterpolator());
Android:interpolator="@android:anim/"
android:shareInterpolator="true"
x < 0.3535< 0.7408< 0.9644)
(x-1.0435)* (x-1.0435)* 8+0.95 (x = 其他)
AnticipateInterpolator:
x * x * ((2+ 1) * x - 2)
AccelerateDecelerateInterpolator:
(cos((x+ 1) * π) / 2.0) + 0.5





< 0.5)
0.5*((2*x-2) * (2*x-2) * ((3 + 1) * (2*x-2) + 3)+2) (0.5 <= x < 1.0)




DecelerateInterpolator:
1.0 - pow((1.0 - x), 2 * 1)


OvershootInterpolator:
(x-1) * (x-1) * ((2+ 1) *( x-1) + 2)+1



