[英]How to create custom Interpolator to apply translate animation in 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);
}
}
如何在 interpolate 中創建以使用上述函數進行翻譯。
簡短回答:從名字上我猜你的 easyIn 應該是一個 AccelerateInterpolator
你寫的函數不是插值器能做的。 插值器不關心它是 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)
請閱讀本文以獲取詳細信息:
訪問https://matthewlein.com/tools/ceaser通過操作圖表創建自定義插值器而不是復制線下方的值
代碼片段,簡短的和長期的:
比用
Interpolator mInterpolator = PathInterpolatorCompat.create(1.000f, 0.000f, 1.000f, 1.030f)
使用復制的值創建自定義插值器
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.