先看效果图:
老是提些各种需求问题,我觉得系统默认的颜色挺好的,但是Pk不过,谁叫我们不是需求人员呢,改吧!
这个没法了只能看源码了,还好下载了源码, sources\base\core\res\res\ 下应有尽有,修改进度条颜色只能找progress ,因为是改变样式,首先找styles.xml
找到xml后,进去找到:
1
2
3
4
5
6
7
8
9
10
|
<
style
name
=
"Widget.ProgressBar"
>
<
item
name
=
"android:indeterminateOnly"
>true
item
>
<
item
name
=
"android:indeterminateDrawable"
>@android:drawable/progress_medium_white
item
>
<
item
name
=
"android:indeterminateBehavior"
>repeat
item
>
<
item
name
=
"android:indeterminateDuration"
>3500
item
>
<
item
name
=
"android:minWidth"
>48dip
item
>
<
item
name
=
"android:maxWidth"
>48dip
item
>
<
item
name
=
"android:minHeight"
>48dip
item
>
<
item
name
=
"android:maxHeight"
>48dip
item
>
style
>
|
这是那个默认转圈的,但今天我们不修改这个,我们是要改变水平进度条颜色,所以找到:
1
2
3
4
5
6
7
|
<
style
name
=
"Widget.ProgressBar.Horizontal"
>
<
item
name
=
"android:indeterminateOnly"
>false
item
>
<
item
name
=
"android:progressDrawable"
>@android:drawable/progress_horizontal
item
>
<
item
name
=
"android:indeterminateDrawable"
>@android:drawable/progress_indeterminate_horizontal
item
>
<
item
name
=
"android:minHeight"
>20dip
item
>
<
item
name
=
"android:maxHeight"
>20dip
item
>
style
>
|
你看系统一步一步关联的,扩展性很性,低耦合,所以我们现在只要改变进度条是怎么样画出来的就行了 ,但是负责画进度条的是
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
|
xml
version
=
"1.0"
encoding
=
"utf-8"
?>
<
layer-list
xmlns:android
=
"http://schemas.android.com/apk/res/android"
>
<
item
android:id
=
"@android:id/background"
>
<
shape
>
<
corners
android:radius
=
"5dip"
/>
<
gradient
android:angle
=
"270"
android:centerColor
=
"#ff5a5d5a"
android:centerY
=
"0.75"
android:endColor
=
"#ff747674"
android:startColor
=
"#ff9d9e9d"
/>
shape
>
item
>
<
item
android:id
=
"@android:id/secondaryProgress"
>
<
clip
>
<
shape
>
<
corners
android:radius
=
"5dip"
/>
<
gradient
android:angle
=
"270"
android:centerColor
=
"#80ffb600"
android:centerY
=
"0.75"
android:endColor
=
"#a0ffcb00"
android:startColor
=
"#80ffd300"
/>
shape
>
clip
>
item
>
<
item
android:id
=
"@android:id/progress"
>
<
clip
>
<
shape
>
<
corners
android:radius
=
"5dip"
/>
<
gradient
android:angle
=
"270"
android:centerColor
=
"#ffffb600"
android:centerY
=
"0.75"
android:endColor
=
"#ffffcb00"
android:startColor
=
"#ffffd300"
/>
shape
>
clip
>
item
>
layer-list
>
|
看到没有,这是系统的进度条画出的布局条件
1
2
3
|
android:startColor="#80ffd300"
android:centerColor="#80ffb600"
android:endColor="#ff747674"
|
我们只要改变这个色值就能改变他的颜色,主要改变的是
说了这么多,到底怎么做呢,很简单:
在我们的项目下新建一个 style.xml 文件
创建一个style 标签,集成系统默认样式,然后自定义一个新的progressDrawable 文件,随后面在layout 中的progress 中引用这个文件就行。
1
2
3
4
5
6
7
|
<
style
name
=
"ProgressBar_Mini"
parent
=
"@android:style/Widget.ProgressBar.Horizontal"
>
<
item
name
=
"android:maxHeight"
>50dip
item
>
<
item
name
=
"android:minHeight"
>8dip
item
>
<
item
name
=
"android:indeterminateOnly"
>false
item
>
<
item
name
=
"android:indeterminateDrawable"
>@android:drawable/progress_indeterminate_horizontal
item
>
<
item
name
=
"android:progressDrawable"
>@drawable/progressbar_mini
item
>
style
>
|
下面是我的 progressbar_mini 文件,改变了下android:endColor="#F5F5F5" android:startColor="#BEBEBE" 的色值
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
|
<
layer-list
xmlns:android
=
"http://schemas.android.com/apk/res/android"
>
<
item
android:id
=
"@android:id/background"
>
<
shape
>
<
corners
android:radius
=
"5dip"
/>
<
gradient
android:angle
=
"270"
android:centerY
=
"0.75"
android:endColor
=
"#F5F5F5"
android:startColor
=
"#BEBEBE"
/>
shape
>
item
>
<
item
android:id
=
"@android:id/secondaryProgress"
>
<
clip
>
<
shape
>
<
corners
android:radius
=
"0dip"
/>
<
gradient
android:angle
=
"270"
android:centerY
=
"0.75"
android:endColor
=
"#165CBC"
android:startColor
=
"#85B0E9"
/>
shape
>
clip
>
item
>
<
item
android:id
=
"@android:id/progress"
>
<
clip
>
<
shape
>
<
corners
android:radius
=
"5dip"
/>
<
gradient
android:angle
=
"270"
android:centerY
=
"0.75"
android:endColor
=
"#165CBC"
android:startColor
=
"#85B0E9"
/>
shape
>
clip
>
item
>
layer-list
>
|
最后引用其就可以了。
1
2
3
4
5
6
|
<
ProgressBar
android:id
=
"@+id/progress"
style
=
"@style/ProgressBar_Mini"
android:layout_width
=
"fill_parent"
android:layout_height
=
"wrap_content"
android:progress
=
"50"
/>
|