8

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

样式.xml

<style name="ProgressTheme" parent="@android:style/Widget.ProgressBar.Large">
    <item name="android:indeterminateDrawable">@drawable/spinner_holo_light</item>
</style>

ProgressBar用以下方式在我的内部调用这种风格:

进度条.xml

<ProgressBar
    android:id="@+id/loadingProgressBar"
    style="@style/ProgressTheme"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content" />

问题在于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" />

但如果我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" />

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

4

4 回答 4

12

在较旧的设备上,当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" />

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

<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" />

动画在旧设备上可能会滞后。要解决此问题,请添加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>
于 2012-11-11T16:29:16.570 回答
1

制作进度对话框的透明背景。

减少边框进度对话框。

以及自定义循环进度对话框的微调器颜色。

http://pankajchunchun.wordpress.com/2011/09/10/customization-of-spinner-progress/

于 2013-06-06T16:27:50.257 回答
0

我什至无法在三星 Galaxy S Plus 上使用它

<item name="android:animationResolution">33</item>

我在问类似于你的回答@Tomik

预 HoneyComb 设备上的 Android 进度条旋转缓慢

确定在所有预蜂窝设备上都顺利吗?

于 2013-05-19T10:41:05.757 回答
0

我通过将背景 xml 自定义格式更改为 indeterminateDrawable 解决了这个问题

使用android:indeterminateDrawable除了android:BackGround

    <ProgressBar
    android:layout_centerHorizontal = "true"
    android:layout_centerVertical = "true"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:indeterminateDrawable = "@drawable/progressbar"
    android:id="@+id/progressBar"        
    android:indeterminate = "true"/>

和自定义进度条 XML 代码

<?xml version="1.0" encoding="utf-8" ?>

 <rotate xmlns:android="http://schemas.android.com/apk/res/android"
    android:fromDegrees="0"
    android:pivotX="50%"
    android:pivotY="50%"
    android:toDegrees="360">

     <shape android:shape="ring" android:innerRadiusRatio="3"
        android:thicknessRatio="7" android:useLevel="false">

        <size android:width="76dip" android:height="76dip" />
           <gradient android:type="sweep" android:useLevel="false"
            android:startColor="@android:color/transparent"
            android:endColor="#00FF00"
            android:angle="0" />
    </shape>
</rotate>  
于 2019-08-20T19:57:49.780 回答