Android 動畫之Interpolator插入器
做了些動畫,發現動畫都有一個Interpolator的屬性,它到底是個啥東西?
網上也有很多解釋Interpolator的文章,基本上都是停留在直接翻譯SDK的意思層面上。看了,也就明白一個大概。
Interpolator英文意思是: 篡改者; 分類機; 校對機
SDK對Interpolator的描述是:An interpolator defines the rate of change of an animation. This allows the basic animation effects (alpha, scale, translate, rotate) to be accelerated, decelerated, repeated, etc。簡而言之Interpolator就是一個“變化率”,一個基本動畫的“變化率”。
比如:從A到B的一個平移動畫,移動,當然後速度的快慢,那麼從A到B可以是勻速、勻加速、勻減速、變速完成這段距離。假設距離為S,時間為t,速度為v,都知道S=v*t。
這個Interpolator在這裡就是一個速度控制器,控制速度變化。先給一個對Interpolator的大概理解,接下來站在程式設計師的角度來認識Interpolator。
Interpolator藉口只有一個抽象方法getInterpolation(float input),由此SDK中擴充套件了另外幾個常用Interpolator類,分別是:
——AccelerateInterpolator:動畫從開始到結束,變化率是一個加速的過程。
——DecelerateInterpolator:動畫從開始到結束,變化率是一個減速的過程。
——CycleInterpolator:動畫從開始到結束,變化率是迴圈給定次數的正弦曲線。
——AccelerateDecelerateInterpolator:動畫從開始到結束,變化率是先加速後減速的過程。
——LinearInterpolator:動畫從開始到結束,變化率是線性變化。
..............
這裡給一個簡單的實現Interpolator介面的類:
import android.view.animation.Interpolator;
public class MyInterpolator implements Interpolator {
private float mFactor;
private int i;
public MyInterpolator(int i){
this.i = i;
}
@Override
public float getInterpolation(float input) {
switch(i){
case 1:mFactor = input;
break;
case 2:mFactor = input*input*input;
break;
}
return mFactor;
}
}
從上面看來,自定義一個Interpolator就是用input根據所需構造一個函式出來
比如:這裡把初始變數為2的時候,把函式改為:mFactor=3*input。這裡給出一個測試出來的效果圖
這兩個圖所做的動畫都是往下移動100的距離,時間都為3000ms.並且同時做。那為什麼綠色的花移動距離是紫色花移動距離的3倍呢?這裡來分析一下。
都是以input為變數的一次線性函式,故兩者都是勻速運動,此時後者的速度是前者的3倍,所以移動距離也應該是3被。回過頭來看,在設定TranslateAniamtion的時候,明明是移動一樣的距離啊!這裡可以猜測這時設定的距離就不起效果了,也就是Interpolator改變了之前設定的距離。
現在基本上明白了Interpolator到底是做什麼的了!
不說了,玩Dota了
http://hi.baidu.com/soodroid/blog/item/2be2743a91ae6ded1b4cffef.html
相關文章
- [譯]Android 動畫的靈魂—— InterpolatorAndroid動畫
- 深入理解 Android 動畫 Interpolator 類的使用Android動畫
- 【Android 動畫】動畫詳解之插值器(二)Android動畫
- 再談屬性動畫——介紹以及自定義Interpolator插值器動畫
- Android之動畫Android動畫
- Android 動畫之屬性動畫Android動畫
- 【Android 動畫】動畫詳解之屬性動畫(三)Android動畫
- 【Android 動畫】動畫詳解之補間動畫(一)Android動畫
- 【Android 動畫】動畫詳解之屬性動畫(五)Android動畫
- Xamarin.Android之動畫Android動畫
- Android動畫效果之Tween Animation(補間動畫)Android動畫
- Android動畫效果之Frame Animation(逐幀動畫)Android動畫
- Android開發之View動畫AndroidView動畫
- Android開發之幀動畫Android動畫
- Android動畫效果之自定義ViewGroup新增布局動畫Android動畫View
- Android動畫效果之Property Animation進階(屬性動畫)Android動畫
- 04.Android之動畫問題Android動畫
- Android開發之屬性動畫Android動畫
- Android 之 TranslateAnimation類:位移動畫類Android動畫
- Android學習之 屬性動畫Android動畫
- 自制android gif動畫解析器Android動畫
- 【Android動畫】之Tween動畫 (漸變、縮放、位移、旋轉)Android動畫
- Android開發之Activity轉場動畫Android動畫
- Android開發之ViewPager切換動畫AndroidViewpager動畫
- 【Android 動畫】動畫詳解之仿微信檢視大圖效果(四)Android動畫
- Android動畫Android動畫
- android 動畫Android動畫
- Android基礎動畫之Tween Animation和Frame AnimationAndroid動畫
- Android基礎夯實--重溫動畫(四)之屬性動畫 ValueAnimator詳解Android動畫
- Android 動畫詳解:屬性動畫、View 動畫和幀動畫Android動畫View
- android動畫——屬性動畫(Property Animation)Android動畫
- android 動畫 ——檢視動畫(View Animation)Android動畫View
- Android屬性動畫:動畫流控制Android動畫
- Android 動畫初探Android動畫
- Android 動畫原理Android動畫
- HashMap之元素插入HashMap
- TreeMap之元素插入
- CSS動畫篇之404動畫CSS動畫