本文介紹了如何在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);
}
}
如何使用上面的函數Create In Interpolate進行翻譯。
推薦答案
簡答:從名字看,我猜你的easyIn應該是一個加速插值器
您編寫的函數不是插值器所能做的。插值器不關心它是Scale動畫、Alpha動畫還是TranslateAnimation。
文檔對Interpolator getInterpolation的解釋如下:
介于0和1.0之間的值,表示動畫中的當前點,其中0表示開始,1.0表示結束
插補器提供了從(相對)經過的時間映射到動畫進度的功能。您可以想象它的單位為%,getInterpolation(Xy)將告訴您
“如果通過總時長的XY%,則應通過總動畫的多少%?”
以LinearInterpolator為例。實現如下所示:
public float getInterpolation(float t) {
return t
}
示例:使用LinearInterpolator設置從0px到200px的動畫:
經過45%(0.45)的時間后,應通過45%(回報0.45)的動畫,即90px(200px*0.45)
有關詳細信息,請閱讀以下內容:
Android Animations Tutorial 5: More on Interpolators
這篇關于如何在Android中創建自定義插值器來應用翻譯動畫的文章就介紹到這了,希望我們推薦的答案對大家有所幫助,