簡體   English   中英

如何創建自定義插值器以在 android 中應用翻譯動畫

[英]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)

請閱讀本文以獲取詳細信息:

Android 動畫教程 5:有關插值器的更多信息

訪問https://matthewlein.com/tools/ceaser通過操作圖表創建自定義插值器而不是復制線下方的值

代碼片段,簡短的和長期的:

比用

Interpolator mInterpolator = PathInterpolatorCompat.create(1.000f, 0.000f, 1.000f, 1.030f)

使用復制的值創建自定義插值器

您可以使用PathInterpolatorCompat類。

這使用三次貝塞爾方法並需要 4 個參數。

你可以在這個網站上獲取需要的參數或這個網站

val interpolatorCompat = PathInterpolatorCompat.create(0.12,1.05f,.98f,-0.82f)
anim.setInterpolator(interpolatorCompat);

在此處輸入圖片說明

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM