ProgressBar
ProgressBar是进度条控件,ProgressBar的应用场景很多,比如用户登录时,后台发送请求,以及进行等待服务器返回信息等一些比较耗时的操作。这个时候如果没有提示,用户可能会以为程序崩溃了或手机死机了,会大大降低用户体验,所有在需要进行耗时操作的地方,添加上进度条,让用户知道当前的程序正在执行,也可以直观地告诉用户当前任务的执行进度。
ProgressBar控件的使用
在布局文件中添加控件
<ProgressBar
android:id="@+id/progressBar"
android:layout_width="match_parent"
android:layout_height="match_parent"/>
我们可以通过设置其style属性更改ProgressBar控件的样式(如条形,环形)
ProgressBar控件的属性
ProgressBar控件在使用过程中,经常会使用到以下属性
属性名称 | 描述 |
max | 进度条最大值 |
progress | 进度条已完成进度值 |
indeterminate | 如果设置成true,则进度条不精确显示进度 |
indeterminateDrawable | 如果不显示进度的进度条的Drawable对象 |
indeterminateDuration | 设置不精确显示进度的持续条件 |
progressDrawable | 设置轨道对应的Drawable对象 |
系统提供的进度条
<!--系统提供的圆形进度条,依次是小,中,大 -->
<ProgressBar
android:id="@+id/progressBar"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
style="?android:attr/progressBarStyleSmall"/>
<ProgressBar
android:layout_width="wrap_content"
android:layout_height="wrap_content"
/>
<ProgressBar
android:layout_width="wrap_content"
android:layout_height="wrap_content"
style="?android:attr/progressBarStyleLarge"/>
<!--系统提供的水平进度条-->
<ProgressBar
style="@style/Widget.AppCompat.ProgressBar.Horizontal"
android:progress="18"
android:layout_width="match_parent"
android:layout_height="wrap_content"
/>
<ProgressBar
style="@style/Widget.AppCompat.ProgressBar.Horizontal"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:indeterminate="true"
/>
ProgressBar控件的visibility属性使用
在使用ProgressBar控件时,我们经常要控制它的消失和显示,这时可以设置visibility属性。visibility属性的值如下:
visible:表示控件可见。
invisible:表示控件不可见,但会占用原来的位置和大小。
gone:表示控件不可见,但不会占用原来的位置和大小。
val progressBar:ProgressBar=findViewById(R.id.progressBar)
if(progressBar.visibility== View.VISIBLE){
//设置为可见的状态
progressBar.visibility=View.GONE
}else{
//设置为不可见的状态,并且不占用任何空间位置
progressBar.visibility=View.VISIBLE
}
ProgressBar自定义菊花加载
<ProgressBar
android:id="@+id/progressBar"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:indeterminateDrawable="@drawable/rotate"
/>
<?xml version="1.0" encoding="utf-8"?>
<animated-rotate xmlns:android="http://schemas.android.com/apk/res/android"
android:drawable="@drawable/pg"
android:pivotX="50%"
android:pivotY="50%"
android:fromDegrees="0"
android:toDegrees="360">
</animated-rotate>