2つの補間器を使用してアニメーションを作成する必要があります。たとえば、アニメーションの長さは1秒で0秒から0.5秒、加速補間器を使用し、0.5秒から1秒はバウンス補間器を使用します。
これを行う方法がありますか?
2つの補間器を使用してアニメーションを作成する必要があります。たとえば、アニメーションの長さは1秒で0秒から0.5秒、加速補間器を使用し、0.5秒から1秒はバウンス補間器を使用します。
これを行う方法がありますか?
あなたはこのようなことを試すことができます:
<?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秒です。お役に立てば幸いです。
私は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);
}
}
こんにちは、例では匿名クラスに失敗があります。
これではありません:pointerAnimation.setInterpolator(new CustomInterpolator(500));
これです:pointerAnimation.setInterpolator(new CustomBounceInterpolator(500));
とにかく多くの感謝は私を大いに助けてくれました
この投稿はすでに古いですが、ここに着陸する次の投稿のために:
@ademar111190の例は完全に正しくありません。
ではgetInterpolation(float t)
、tはとの間にある必要が0
あり1
ます。これはアニメーションのタイムスパンです。使用される入力500は、2番目の補間器を完全に無視します。
ここにドキュメントへのリンクがあります:Time Interpolator