您的位置:首页 > 移动开发 > Android开发

Android ProgressBar高级自定义水平/圆形进度条

2016-02-26 10:59 615 查看

自定义水平ProgressBar

ProgressBar有两个进度,一个是android:progress,另一个是android:secondaryProgress。ProgressBar还分为确定的和不确定的,确定的是我们能明确看到进度,相反不确定的就是不清楚、不确定一个操作需要多长时间来完成,这个时候就需要用的不确定的ProgressBar了。属性android:indeterminate。

第一步,样式文件名:progressbar_bg.xml,放在drawable文件夹:

view
sourceprint?

01.
<?xml
version=
"1.0"
encoding=
"utf-8"
?>


02.
<layer-list
xmlns:android=
"http://schemas.android.com/apk/res/android"
>


03.


04.
<!--
3
个层的顺序即为显示时的叠加顺序-->


05.
<!--背景色-->


06.
<item
android:id=
"@android:id/background"
>


07.
<shape>


08.
<corners
android:radius=
"5dip"
/>


09.


10.
<solid
android:color=
"#CCCCCC"
/>


11.
</shape>


12.
</item>


13.


14.
<!--二级进度条的颜色-->


15.
<item
android:id=
"@android:id/secondaryProgress"
>


16.
<clip>


17.
<shape>


18.
<corners
android:radius=
"5dip"
/>


19.


20.
<solid
android:color=
"#88F56100"
/>


21.
</shape>


22.
</clip>


23.
</item>


24.


25.
<!--一级进度条的颜色,也可以直接替换成图片-->


26.
<item
android:id=
"@android:id/progress"
>


27.
<clip>


28.
<shape>


29.
<corners
android:radius=
"5dip"
/>


30.


31.
<solid
android:color=
"#F56100"
/>


32.
</shape>


33.
</clip>


34.
</item>


35.


36.
</layer-list>


第二步,布局组件代码:

view
sourceprint?

01.
<?xml
version=
"1.0"
encoding=
"utf-8"
?>


02.
<LinearLayout
xmlns:android=
"http://schemas.android.com/apk/res/android"


03.
android:orientation=
"vertical"


04.
android:layout_width=
"match_parent"


05.
android:layout_height=
"match_parent"
>


06.


07.
<ProgressBar


08.
android:id=
"@+id/progress_bar"


09.
style=
"?android:attr/progressBarStyleHorizontal"


10.
android:layout_width=
"match_parent"


11.
android:layout_height=
"wrap_content"


12.
android:layout_marginTop=
"100dp"


13.
android:minHeight=
"20dp"


14.
android:padding=
"10dp"


15.
android:progressDrawable=
"@drawable/progressbar_bg"
/>


16.


17.
</LinearLayout>


自定义圆形ProgressBar

第一步,在drawable文件夹下新建:progressbar_circle_1.xml,如下:

[java] view
plain copy







<?xml version="1.0" encoding="utf-8"?>

<rotate xmlns:android="http://schemas.android.com/apk/res/android"

android:drawable="@drawable/loading" //自定义图片

android:fromDegrees="0"

android:pivotX="50%"

android:pivotY="50%"

android:toDegrees="360" >

</rotate>

第二步,在Style中定义mProgress_circle,如下:

[java] view
plain copy







<style name="mProgress_circle">

<item name="android:indeterminateDrawable">@drawable/progressbar_circle_1</item>

<item name="android:minWidth">25dp</item>

<item name="android:minHeight">25dp</item>

<item name="android:maxWidth">60dp</item>

<item name="android:maxHeight">60dp</item>

</style>

支持大小自己随意定,别失真就好

第三步,组件中引用,如下:

[java] view
plain copy







<ProgressBar

android:id="@+id/progressBar2"

style="@style/mProgress_circle"

android:layout_gravity="center_vertical"

android:layout_width="match_parent"

android:indeterminateDuration="1200"

android:layout_height="wrap_content" />

带进度的圆形进度条: /article/1645793.html
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: