2012-02-24 65 views
5

首先,这是而不是问题“如何更改进度条颜色”的副本,它确实解决了我的问题,但它产生了另一个问题。Android - 如何更改水平进度条颜色而不会丢失动画

所以,我有一个水平进度条,我一直在写/更新一个进度条,即将进度设置为1,然后是2(最多100)来模拟完成百分比,如果我不'不改变颜色。但是,如您所知,在某些电话上,进度栏的默认资源颜色为绿色,有些为橙色,我希望所有设备上的颜色都为绿色,因此在进度栏属性中,我设置了progressDrawable(大多数人#1的答案)到以下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. 如果它不可能,这是否意味着我必须做我自己的动画?如果是这样,有人能给我一个关于如何让我自己的动画模仿进度条的片段吗?

回答

0

可绘制的进度条必须包含两个ID为“背景”和“进度”的项,可选第三个“secondaryProgress”。看看什么是在这里:https://github.com/android/platform_frameworks_base/blob/master/core/res/res/drawable/progress_horizontal.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> 

也是“夹子”元素是很重要的,因为使用它有可能为系统剪辑“进步”形态。请参阅http://developer.android.com/reference/android/graphics/drawable/ClipDrawable.html