web-dev-qa-db-ja.com

AndroidアニメーションのJava

これは非常に簡単に思えます:私は、補間をアプリケーションのアニメーションに使用するように設定しようとしています。これを、XMLではなく、Javaコードで設定する必要があります(さまざまなものに応じて変更されます)。

Androidウェブサイトから、setInterpolator()が見つかりました

ただし、これをどのように使用すればよいかわかりません。

極間名(つまり、BounceIterpolator)を入力しようとしましたが、これは何もしませんでした。

私は試した R.anim.BounceIterpolatorが、インテリセンスはanim cannot be resolved or is not a field

では、Javaから補間器を設定するにはどうすればよいですか?

36
ACarter
setInterpolator(new BounceInterpolator());
81
Reuben Scratton
anim.setInterpolator(context, Android.R.anim.bounce_interpolator);
14
Zsolt Safrany

更新:

Androidは、アニメーション内で実際のスプリングと物理をサポートするようになりました。下位互換ライブラリの一部。 リンク

カスタム補間器の場合:

  1. この awesome site を使用して、カスタム3次ベジェ曲線を作成します。そして、曲線の制御点を取得します。
  2. Interpolator customInterpolator = PathInterpolatorCompat.create(cpX1,cpX2,cpY1,cpY2)
  3. このcustomInterpolatorをアニメーションに追加します。

Gist を追加しました。一部 詳細はこちら

9
amalBit

amalBit のおかげで、KotlinでPathInterpolatorProgressBarで補間器を作成しました。

val path = Path()
path.lineTo(0.1f, 0.2f)
path.lineTo(0.7f, 0.9f)
path.lineTo(1f, 1f)
val animation = ObjectAnimator.ofInt(progress_bar, "progress", 0, 100)
animation.duration = 2000
animation.interpolator = PathInterpolatorCompat.create(path)
animation.addListener(object : Animator.AnimatorListener {
    override fun onAnimationStart(animator: Animator) {}

    override fun onAnimationEnd(animator: Animator) {
        finish()
    }

    override fun onAnimationCancel(animator: Animator) {}

    override fun onAnimationRepeat(animator: Animator) {}
})
animation.start()

https://www.programcreek.com/Java-api-examples/index.php?api=Android.view.animation.PathInterpolator で他の例を参照してください。

0
CoolMind