Android自定义ProgressBar不旋转

ast*_*zed 8 animation android rotation progress-bar

我想更改a的默认动画ProgressBar,所以我在主题中添加了自定义样式:

styles.xml

<style name="ProgressTheme" parent="@android:style/Widget.ProgressBar.Large">
    <item name="android:indeterminateDrawable">@drawable/spinner_holo_light</item>
</style>
Run Code Online (Sandbox Code Playgroud)

ProgressBar在以下内容中调用此样式:

ProgressBar.xml

<ProgressBar
    android:id="@+id/loadingProgressBar"
    style="@style/ProgressTheme"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content" />
Run Code Online (Sandbox Code Playgroud)

问题在于spinner_holo_light.xml:

如果我使用以下内容,一切都可以在os 3.0+的设备上正常工作,但进度不会在旧的os版本上旋转:

spinner_holo_light.xml

<rotate xmlns:android="http://schemas.android.com/apk/res/android"
    android:drawable="@drawable/spinner_76_inner_holo"
    android:fromDegrees="720"
    android:pivotX="50%"
    android:pivotY="50%"
    android:toDegrees="0" />
Run Code Online (Sandbox Code Playgroud)

但是,如果我使用animate-rotate相反,动画适用于每个操作系统版本,但结果是一个非常滞后的动画.

<animated-rotate xmlns:android="http://schemas.android.com/apk/res/android"
    android:drawable="@drawable/spinner_76_inner_holo"
    android:fromDegrees="720"
    android:pivotX="50%"
    android:pivotY="50%"
    android:toDegrees="0" />
Run Code Online (Sandbox Code Playgroud)

你怎么看待这件事?我在这里做错了吗?

Tom*_*mik 11

在旧设备上它的时候是一个问题android:fromDegrees比我的大android:toDegress<rotate>.尝试交换值:

<rotate xmlns:android="http://schemas.android.com/apk/res/android"
    android:drawable="@drawable/spinner_76_inner_holo"
    android:fromDegrees="0"
    android:pivotX="50%"
    android:pivotY="50%"
    android:toDegrees="720" />
Run Code Online (Sandbox Code Playgroud)

或者,您可以尝试将其设置为无限:

<rotate xmlns:android="http://schemas.android.com/apk/res/android"
    android:drawable="@drawable/spinner_76_inner_holo"
    android:pivotX="50%"
    android:pivotY="50%"
    android:repeatCount="infinite" />
Run Code Online (Sandbox Code Playgroud)

旧设备上的动画可能会滞后.要修复此添加android:animationResolution到样式:

<style name="ProgressTheme" parent="@android:style/Widget.ProgressBar.Large">
    <item name="android:indeterminateDrawable">@drawable/spinner_holo_light</item>
    <item name="android:animationResolution">33</item>
</style>
Run Code Online (Sandbox Code Playgroud)