1、概述
安卓系统的ProcessBar 有横的竖的 还有圆的。
普通的进度条用系统的修改style 就可以实现。SeekBar样式和processBar类似,多了一个可以拖动的小图片
2、实现
2.1布局xml
<ProgressBar
android:id="@+id/bar"
style="@style/ProgressBar_load_gray"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center" />
2.2 style xml
<style name="ProgressBar_load_gray">
<item name="android:maxHeight">16dip</item>
<item name="android:minHeight">1dip</item>
<item name="android:indeterminateOnly">false</item>
<item name="android:progressDrawable">@drawable/progress_horizontal_normal_gray</item>
<item name="android:indeterminateDrawable">@android:drawable/progress_indeterminate_horizontal</item>
</style>
2.3 drawable xml
<?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="5dp"/>
<solid android:color="@android:color/black" />
</shape>
</item>
<item android:id="@android:id/secondaryProgress">
<clip>
<shape>
<corners android:radius="5dp"/>
<solid android:color="@android:color/black" />
</shape>
</clip>
</item>
<item android:id="@android:id/progress">
<clip>
<shape>
<corners android:radius="5dp"/>
<solid android:color="#ff4666" />
</shape>
</clip>
</item>
</layer-list>
2.4 如果是圆环形的processBar(无需进度显示的进度条) 就不用那么麻烦了 直接把
<item name="android:indeterminateDrawable">@android:drawable/progress_indeterminate_horizontal</item>
这个属性设成圆环自己就会转了
或者 直接设置该属性
<ProgressBar
android:id="@+id/bar"
android:indeterminateDrawable="@drawable/progressbar_bg"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center" />
3、SeekBar
<style name="MediaController_SeekBar">
<item name="android:minHeight">5dip</item>
<item name="android:maxHeight">5dip</item>
<item name="android:progressDrawable">@drawable/mediacontroller_seekbar</item>
<item name="android:thumb">@drawable/icon_media_ctr</item> <!-- 小图片 -->
</style>
4、ps saq 在做tv app的时候遇到个问题
问题描述:卡片在获取焦点的时候,需求是要放大,放大了之后,进度条继续向前走就底部就出现了间隙
解决:让卡片重新绘制ui 调用卡片的view.invalidate(); 方法