8

2つの補間器を使用してアニメーションを作成する必要があります。たとえば、アニメーションの長さは1秒で0秒から0.5秒、加速補間器を使用し、0.5秒から1秒はバウンス補間器を使用します。

これを行う方法がありますか?

4

4 に答える 4

13

あなたはこのようなことを試すことができます:

<?xml version="1.0" encoding="utf-8"?>
<set 
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:shareInterpolator="false">

<translate
    android:interpolator="@android:anim/bounce_interpolator"
    android:fromYDelta="0%p"
    android:toYDelta="100"
    android:duration="500"/>

<translate
    android:interpolator = "@android:anim/accelerate_interpolator"
    android:fromYDelta="100"
    android:toYDelta="100"
    android:fromXDelta="0"
    android:toXDelta="100"
    android:startOffset="500"
    android:duration="1000"/>

</set>

これは2つinterpolatorsを使用します。最初の1つは、ビューを0.5秒移動するバウンスです。2つ目は、 0.5秒が経過した後、1秒間、ビューを右に移動するinterpolator加速です。interpolatorしたがって、合計アニメーション時間は1秒です。お役に立てば幸いです。

于 2012-08-10T20:39:08.997 に答える
11

私は1つのアニメーションだけで行います:

Animation animation = new TranslateAnimation(0,100,0,0);
animation.setDuration(1000);
pointerAnimation.setInterpolator(new CustomBounceInterpolator(500));
view.startAnimation(animation);

およびCustomInterpolatorクラス:

public class CustomBounceInterpolator implements Interpolator {

private float timeDivider;
private AccelerateInterpolator a;
private BounceInterpolator b;

public CustomBounceInterpolator(float timeDivider) {
    a = new AccelerateInterpolator();
    b = new BounceInterpolator();
    this.timeDivider = timeDivider;
}

public float getInterpolation(float t) {
    if (t < timeDivider)
        return a.getInterpolation(t);
    else
        return b.getInterpolation(t);
}

}
于 2012-08-13T14:31:07.683 に答える
3

こんにちは、例では匿名クラスに失敗があります。

これではありません:pointerAnimation.setInterpolator(new CustomInterpolator(500));

これです:pointerAnimation.setInterpolator(new CustomBounceInterpolator(500));

とにかく多くの感謝は私を大いに助けてくれました

于 2016-06-22T08:06:58.243 に答える
0

この投稿はすでに古いですが、ここに着陸する次の投稿のために:

@ademar111190の例は完全に正しくありません。

ではgetInterpolation(float t)、tはとの間にある必要が0あり1ます。これはアニメーションのタイムスパンです。使用される入力500は、2番目の補間器を完全に無視します。

ここにドキュメントへのリンクがあります:Time Interpolator

于 2021-09-17T13:04:44.897 に答える