一、ProgressBar基础使用
**(1)默认ProgressBar
<ProgressBar
android:layout_width="wrap_content"
android:layout_height="wrap_content" />
(2)ProgressBar属性
- android:indeterminate:设置为不确定模式,动画无限循环
- android:indeterminateDrawable:定义不确定模式是否可drawable
- android:max:定义进度的最大值
- android:maxHeight:进度Widget最大高
- android:maxWidth:进度Widget最大宽
- android:minHeight:进度Widget最小高
- android:minWidth:进度Widget最小宽
- android:progress:设置进度的默认值,0到max
- android:progressBackgroundTint:进度条的背景颜色
- android:progressTint:进度条的颜色
- android:secondaryProgress:定义二级进度值,0到max
(3)ProgressBar方法
- getMax():返回这个进度条的范围的上限。
- getProgress():返回进度。
- getSecondaryProgress():返回次要进度。
- incrementProgressBy():指定增加的进度。为正数时进度增加;为负数时进度减少。
- isIndeterminate():指示进度条是否在不确定模式下。
- setIndeterminate():设置是否为不确定模式。
(4)系统提供ProgressBar样式
- 水平进度条
<ProgressBar
style="@android:style/Widget.ProgressBar.Horizontal"
android:layout_width="200dp"
android:layout_height="10dp"
android:layout_gravity="center_horizontal"
android:layout_marginTop="10dp"
android:max="100"
android:progress="60" />
- 普通大小的环形进度条
<ProgressBar
style="@android:style/Widget.ProgressBar.Inverse"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center_horizontal"
android:layout_marginTop="10dp" />
- 大环形进度条
<ProgressBar
style="@android:style/Widget.ProgressBar.Large"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center_horizontal"
android:layout_marginTop="10dp" />
- 小环形进度条
<ProgressBar
style="@android:style/Widget.ProgressBar.Large"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center_horizontal"
android:layout_marginTop="10dp" />
二、自定义ProgressBar样式
(1)自定义带渐变色圆角的水平进度条
<ProgressBar
style="@android:style/Widget.ProgressBar.Horizontal"
android:layout_width="200dp"
android:layout_height="20dp"
android:layout_gravity="center_horizontal"
android:layout_marginTop="10dp"
android:max="100"
android:progress="80"
android:progressDrawable="@drawable/progress_bar_bg" />
- 设置背景颜色和圆角
- 设置进度条渐变色和圆角
<?xml version="1.0" encoding="utf-8"?>
<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
<item>
<shape>
<corners android:radius="10dp" />
<solid android:color="@color/white" />
</shape>
</item>
<item>
<clip>
<shape>
<corners android:radius="10dp" />
<gradient
android:angle="0"
android:endColor="@color/colorPrimary"
android:startColor="@color/colorAccent" />
</shape>
</clip>
</item>
</layer-list>
(2)自定义旋转图片加载
<ProgressBar
android:layout_width="30dp"
android:layout_height="30dp"
android:layout_gravity="center_horizontal"
android:layout_marginTop="10dp"
android:progressDrawable="@drawable/progress_bar_bg" />
- 设置旋转图片
- 设置圆形和旋转角度
<?xml version="1.0" encoding="utf-8"?>
<animated-rotate xmlns:android="http://schemas.android.com/apk/res/android"
android:drawable="@mipmap/loading"
android:fromDegrees="0.0"
android:pivotX="50.0%"
android:pivotY="50.0%"
android:toDegrees="360.0" />
(3)自定义多张图片播放动画
- 设置为不确定模式
- indeterminateDrawable设置Drawable动画
<ProgressBar
android:layout_width="80dp"
android:layout_height="80dp"
android:indeterminate="true"
android:layout_gravity="center_horizontal"
android:layout_marginTop="10dp"
android:indeterminateDrawable="@drawable/progress_bar_bg" />
- 设置Drawable动画
<?xml version="1.0" encoding="UTF-8"?>
<animation-list android:oneshot="false"
xmlns:android="http://schemas.android.com/apk/res/android">
<item android:duration="100" android:drawable="@mipmap/icon_run1" />
<item android:duration="100" android:drawable="@mipmap/icon_run2" />
<item android:duration="100" android:drawable="@mipmap/icon_run3" />
<item android:duration="100" android:drawable="@mipmap/icon_run4" />
<item android:duration="100" android:drawable="@mipmap/icon_run5" />
</animation-list>
三、Shape使用
(1)rectangle:矩形
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android"
android:shape="rectangle">
<!--填充颜色-->
<solid android:color="@color/colorPrimary" />
<!--圆角大小-->
<corners android:radius="10dp" />
<!--四个圆角的大小-->
<padding
android:bottom="12dp"
android:left="12dp"
android:right="12dp"
android:top="12dp" />
<!--边框大小、颜色-->
<stroke
android:width="5dp"
android:color="@color/colorAccent" />
<!--渐变角度、渐变结束颜色、渐变起始颜色-->
<gradient
android:angle="0"
android:endColor="@android:color/black"
android:startColor="@android:color/white" />
</shape>
(2)oval:椭圆
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android"
android:shape="oval">
<!--填充颜色-->
<solid android:color="@color/colorPrimary" />
<!--渐变的XY轴起始位置,范围0-1,0.5表示圆心-->
<!--渐变类型:线性渐变(linear)、放射渐变(radial)、扫描性渐变(sweep)-->
<gradient
android:centerX="0.5"
android:centerY="0.5"
android:endColor="@color/colorAccent"
android:startColor="@color/colorPrimary"
android:type="sweep" />
</shape>
(3)line:线
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android"
android:shape="line">
<!--填充颜色的高度-->
<!--虚线间距宽度-->
<!--虚线宽度-->
<stroke
android:width="1dp"
android:color="@color/colorAccent"
android:dashWidth="4dp"
android:dashGap="3dp" />
<!--line的高度-->
<size android:height="3dp" />
</shape>
(4)ring:圆环
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android"
android:shape="ring"
android:thickness="10dp"
android:useLevel="false">
<!--thickness圆环宽度-->
<!--useLevel需要设置为false-->
<gradient
android:endColor="@color/colorPrimary"
android:startColor="@color/colorAccent"
android:type="sweep" />
</shape>