progerssbar-style 属性分析
先看如下代码
<ProgressBar android:id="@+id/stateProgressBar" android:orientation="horizontal" android:layout_width="match_parent" android:layout_height="40dp" android:max="100" android:progress="10" android:secondaryProgress="50" android:layout_marginTop="4dip" style="@style/play_ProgressBar"/>
style的代码如下
<layer-list xmlns:android="http://schemas.android.com/apk/res/android"> <item android:id="@android:id/background" android:drawable="@drawable/scrubber_bg_funui" /> <item android:id="@android:id/secondaryProgress"> <scale android:scaleWidth="100%" android:drawable="@drawable/scrubber_secondary_funui" /> </item> <item android:id="@android:id/progress"> <scale android:scaleWidth="100%" android:drawable="@drawable/scrubber_primary_funui" /> </item> </layer-list>
里面用到的颜色值如下
<?xml version="1.0" encoding="utf-8"?> <resources> <drawable name="scrubber_bg_funui">#0000ff</drawable> <drawable name="scrubber_secondary_funui">#ff0000</drawable> <drawable name="scrubber_primary_funui">#00000000</drawable> </resources>
运行结果如下
当我们进一步做如下更改的时候
<?xml version="1.0" encoding="utf-8"?> <resources> <drawable name="progress_bg_holo_dark">#0000ff</drawable> <drawable name="progress_secondary_holo_dark">#ff0000</drawable> <drawable name="progress_primary_holo_dark">#000000</drawable> </resources>
结果如下
从上图我们可以得出结论
progressbar的三个drawable变量分别为
1.@android:id/background 对应的就是进度条最底部的颜色
2.@android:id/secondaryProgress 对应的是中间层的进度条颜色
3.@android:id/progress 对应的是最上层进度条行进颜色
我们在看一下scale android:scaleWidth="100%" 的效果
代码更改如下
<?xml version="1.0" encoding="utf-8"?> <layer-list xmlns:android="http://schemas.android.com/apk/res/android"> <item android:id="@android:id/background" android:drawable="@drawable/progress_bg_holo_dark" /> <item android:id="@android:id/secondaryProgress"> <scale android:scaleWidth="10%" android:drawable="@drawable/progress_secondary_holo_dark" /> </item> <item android:id="@android:id/progress"> <scale android:scaleWidth="200%" android:drawable="@drawable/progress_primary_holo_dark" /> </item> </layer-list>
对应结果如下
似乎还看不出有什么特点,以后用到在进行验证
其实,看网上所给的style,它的实现方法非常丰富。如下
<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/secondaryProgress"> <clip> <shape> <corners android:radius="5dip" /> <gradient android:startColor="#80ffd300" android:centerColor="#80ffb600" android:centerY="0.75" android:endColor="#a0ffcb00" android:angle="270" /> </shape> </clip> </item> <item android:id="@android:id/progress"> <clip> <shape> <corners android:radius="5dip" /> <gradient android:startColor="#ffffd300" android:centerColor="#ffffb600" android:centerY="0.75" android:endColor="#ffffcb00" android:angle="270" /> </shape> </clip> </item> </layer-list>
也就是,它每一个itme都可以使用一个shape来定义,包括圆角,粗细等