AndroidのRotateDrawableで回転速度を調整する

RotateDrawableとは

RotateDrawableはDrawableを回転させることができるDrawableで、以下のようなdrawableファイルを作成することで使うことが可能になります

<?xml version="1.0" encoding="utf-8"?>
<rotate
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:drawable="@drawable/ic_action_reload"
    android:pivotX="50%"
    android:pivotY="50%"
    />

今回はRotateDrawableの回転速度を変更することができないか調査してみました

drawableファイル内で速度を変更させる

drawableファイル内で速度を変更するにはfromDegreestoDegreesの値を設定することで変更できます

toDegrees=0, fromDegrees=360toDegrees=0, fromDegrees=3600を比較すると後者が10倍ほど早く回転します

<?xml version="1.0" encoding="utf-8"?>
<rotate
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:drawable="@drawable/ic_action_reload"
    android:fromDegrees="0"
    android:pivotX="50%"
    android:pivotY="50%"
    android:toDegrees="3600"
    />

API21時点ではデフォルト値は以下のようになっているようです

float mFromDegrees = 0.0f;
float mToDegrees = 360.0f;

実際の動作

今回はProgressBarを使って表示を行いました

<ProgressBar
      android:layout_width="64dp"
      android:layout_height="64dp"
      android:indeterminateDrawable="@drawable/rotate_default"
      />

結果は以下のようになりました
f:id:scache:20161215021750g:plain

(toDegrees,fromDegrees)の値は, 左から, (指定なし,指定なし), (0,360), (0, 3600)です