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ファイル内で速度を変更するにはfromDegrees
とtoDegrees
の値を設定することで変更できます
toDegrees=0, fromDegrees=360
とtoDegrees=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" />
結果は以下のようになりました
(toDegrees,fromDegrees)
の値は,
左から, (指定なし,指定なし), (0,360), (0, 3600)です