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>