Android - 如何在不丢失动画的情况下更改水平进度条颜色

use*_*019 6 animation android android-progressbar progress-bar

首先,这不是 "如何改变进度条颜色"的问题的重复,它确实解决了我的问题,但它产生了另一个问题.

所以,我有一个水平进度条,我一直在编写/更新进度条一个,即将进度设置为一个,然后设置为两个,(最多100个)来模拟%完成,如果我不改变颜色它会很好用.但是,正如您所知,在某些手机上,进度条的默认资源颜色为绿色,有些为橙色,我希望所有设备上的颜色为绿色,因此在进度条属性中,我设置progressDrawable(由大多数设置建议) Stackoverflow上的答案)到以下xml文件

 <?xml version="1.0" encoding="utf-8"?>
 <shape xmlns:android="http://schemas.android.com/apk/res/android"
android:shape="rectangle">
 <corners android:radius="5dip" />
 <gradient
  android:startColor="#4CC417"
  android:centerColor="#4CC417"
  android:centerY="0.75"
  android:endColor="#4CC417"
  android:angle="270"
/>
</shape>
Run Code Online (Sandbox Code Playgroud)

如果我这样做,进度条现在只显示整个进度(即最终百分比,100),你看不到动画从0到任何百分比.

  1. 有没有办法只更改进度条的默认颜色,仍然有默认动画?

  2. 如果不可能,这是否意味着我必须做自己的动画?如果是这样,有人可以给我一个关于如何使用我自己的动画来模仿进度条的片段吗?

cer*_*.cz 1

进度条可绘制对象必须有两个 ID 为“background”和“progress”的项目,还可以选择第三个项目“secondaryProgress”。看看这里有什么: https: //github.com/android/platform_frameworks_base/blob/master/core/res/res/drawable/progress_horizo ​​ntal.xml

在你的情况下,可绘制的东西看起来像这样:

<layer-list xmlns:android="http://schemas.android.com/apk/res/android">

    <item android:id="@android:id/background">
        <shape>
            <corners android:radius="5dip" />
            <gradient
                    android:startColor="#ff9d9e9d"
                    android:centerColor="#ff5a5d5a"
                    android:centerY="0.75"
                    android:endColor="#ff747674"
                    android:angle="270"
            />
        </shape>
    </item> 

    <item android:id="@android:id/progress">
        <clip>
            <shape>
                <corners android:radius="5dip" />
                <gradient
                        android:startColor="#4CC417"
                        android:centerColor="#4CC417"
                        android:centerY="0.75"
                        android:endColor="#4CC417"
                        android:angle="270"
                />
            </shape>
        </clip>
    </item>

</layer-list>
Run Code Online (Sandbox Code Playgroud)

“剪辑”元素也很重要,因为使用它系统可以剪辑“进度”形状。请参阅http://developer.android.com/reference/android/graphics/drawable/ClipDrawable.html