1. ホーム
  2. アンドロイド

[解決済み】Androidで画像を滑らかに回転させる方法とは?

2022-04-03 01:45:46

質問

を使用しています。 RotateAnimation を使用して、画像を回転させることができます。 以下は、私の rotate_indefinitely.xml ファイルに配置し、それを res/anim/ :

<?xml version="1.0" encoding="UTF-8"?>
<rotate
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:fromDegrees="0"
    android:toDegrees="360"
    android:pivotX="50%"
    android:pivotY="50%"
    android:repeatCount="infinite"
    android:duration="1200" />    

これを適用すると ImageView を使って AndroidUtils.loadAnimation() ということであれば、問題なく動作します。

spinner.startAnimation( 
    AnimationUtils.loadAnimation(activity, R.anim.rotate_indefinitely) );

一つ問題なのは、画像の回転が毎周期の先頭で一時停止しているように見えることです。

つまり、映像が360度回転して、一瞬止まって、また360度回転する、といった具合です。

のようなデフォルトのインターポレーターを使用していることが問題なのではと推測しています。 android:iterpolator="@android:anim/accelerate_interpolator" ( AccelerateInterpolator が、アニメーションを補間しないように指示する方法がわかりません。

どうすれば、アニメーションをスムーズに循環させるために、補間をオフにすることができますか?

解決方法は?

AccelerateInterpolator については正しいです。代わりに LinearInterpolator を使用する必要があります。

を使用すると、組み込みの android.R.anim.linear_interpolator でアニメーション XML ファイルから android:interpolator="@android:anim/linear_interpolator" .

また、プロジェクト内に独自のXML補間ファイルを作成し、例えば、ファイル名を res/anim/linear_interpolator.xml :

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

そして、アニメーションXMLに追加します。

android:interpolator="@anim/linear_interpolator"

特記事項 回転アニメーションがセットの中にある場合、インターポレーターを設定してもうまくいかないようです。rotateをトップエレメントにすると直ります。(これは時間の節約になります)。