【问题标题】:Android Custom ProgressBar not RotatingAndroid自定义ProgressBar不旋转
【发布时间】:2012-10-31 05:25:42
【问题描述】:

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

styles.xml

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

我在我的ProgressBar 中调用了这种风格:

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

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

【问题讨论】:

    标签: android animation rotation progress-bar


    【解决方案1】:

    在旧设备上,当android:fromDegrees 大于&lt;rotate&gt; 中的android:toDegress 时会出现问题。尝试交换值:

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

    【讨论】:

    • 好吧,谢谢,我永远也想不通。现在效果很好。
    【解决方案2】:

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

    减少边框进度对话框。

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

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

    【讨论】:

      【解决方案3】:

      即使添加了,我也无法在三星 Galaxy S Plus 上使用它

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

      我问的问题与@Tomik 的回答类似

      Android Progress Bar slow rotation on pre HoneyComb devices

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

      【讨论】:

        【解决方案4】:

        我通过将背景 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>  
        

        【讨论】:

          猜你喜欢
          • 2014-08-12
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2017-12-06
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2011-01-29
          相关资源
          最近更新 更多