2014-01-08 26 views
3

我想創建一個自定義的插值申請翻譯動畫在動畫應該通過以下功能動畫:如何創建自定義插補申請翻譯Android中

public static float easeIn(float t,float b , float c, float d) { 
       return c*(t/=d)*t + b; 
     } 

其中:

t: current time 
b: start value 
c: change in value 
d: duration 

我發現一個實現的規模動畫,如果只採取一個參數:

import android.view.animation.Interpolator; 

public class MyInterpolator implements Interpolator { 
    public MyInterpolator() { 
    } 

    public float getInterpolation(float t) { 
     float x = 2.0f * t - 1.0f; 
     return 0.5f * (x * x * x + 1.0f); 
    } 
} 

如何在內插中創建使用上述函數進行翻譯。

回答

4

答案很簡單:從名字我猜你easyIn應該是一個AccelerateInterpolator

你寫的功能是不是插值可以做。內插器不關心它是一個縮放,Alpha或TranslateAnimation。
該文檔說明插補getInterpolation這樣的: 表示,其中0表示開始和1.0表示結束

內插器提供了從所經過的時間映射的函數(動畫我們的當前點0和1.0之間的值相對)動畫的進展。你可以用%來想象,getInterpolation(xy)會告訴你
「如果通過了總持續時間的xy%,總動畫應該傳遞多少%?」

以LinearInterpolator爲例。實施將是這樣的:

public float getInterpolation(float t) { 
     return t 
} 

實例:從0像素動畫到200像素與LinearInterpolator:
後45%(0.45)的時間45%(返回0.45)動畫獲得通過,這是90像素(200像素* 0.45)

請仔細閱讀本作的詳細信息:

Android Animations Tutorial 5: More on Interpolators