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

标签 android animation progress-bar android-progressbar

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

所以,我有一个水平进度条,我一直在写/更新进度条一个,即将进度设置为一个,然后设置两个(最多 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>

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

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

  2. 如果不可能,这是否意味着我必须自己制作动画?如果是这样,有人可以给我一个 fragment ,说明如何制作自己的动画来模仿进度条吗?

最佳答案

进度条 drawable 必须有两个项目,id 为“background”和“progress”,第三个项目可选,“secondaryProgress”。看看这里有什么:https://github.com/android/platform_frameworks_base/blob/master/core/res/res/drawable/progress_horizontal.xml

在您的情况下,drawable 看起来像这样:

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

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

关于Android - 如何在不丢失动画的情况下更改水平进度条颜色,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9439107/

相关文章:

android - 为什么我的 OpenGL fragment 在更新时停止重绘?

android - 如何使用动画 move 和淡出任何 View

c# - 如何在 Python 控制台应用程序中制作不确定的进度条?

python - 在 python list(map(...)) 中跟踪进度

jquery - Bootstrap 进度条,渐变颜色按事件宽度按比例显示

android - 谷歌地图不显示使用 flutter 的 Android

android - 平板电脑上的响应时间测量应用程序 : difference in latency between HTML and native Android/iOS?

java - 通过从左到右填充来更改按钮背景

JQuery fadeIn 在 fadeOut 之后被调用两次

ios - 如何在 iOS 中为一组图像制作动画