一、进度条的介绍
进度条是Android提供的一种用于显示长时间操作正在进行的用户界面组件。当应用程序需要执行某项耗时操作且用户需要等待时,可以使用进度条来告知用户任务的进展情况。
Android提供了两种进度条的实现方式:ProgressBar和ProgressDialog。其中,ProgressBar是在应用程序中直接使用的,而ProgressDialog是在应用程序进行耗时操作时显示的一种对话框形式的进度条。
二、使用ProgressBar实现进度条
使用ProgressBar实现进度条非常简单,只需要在布局文件中定义一个ProgressBar即可。并且,ProgressBar提供了多种样式供开发者选择,如水平进度条、圆形进度条等。
1. 水平进度条
水平进度条示例代码:
<ProgressBar android:id="@+id/progressBar_horizontal" style="@android:style/Widget.ProgressBar.Horizontal" android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_margin="20dp" android:progress="0" android:max="100" android:secondaryProgress="50" />
ProgressBar的常用属性:
style
:样式progress
:进度max
:最大值secondaryProgress
:第二进度(用于显示进度条的另一个段)
2. 圆形进度条
圆形进度条示例代码:
<ProgressBar android:id="@+id/progressBar_circular" style="@android:style/Widget.DeviceDefault.Light.ProgressBar.Large" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_margin="20dp" />
ProgressBar的样式属性可以设置为圆形进度条的样式@android:style/Widget.DeviceDefault.Light.ProgressBar.Large
。
3. 自定义进度条
除了以上提到的几种样式外,还可以自定义进度条的样式。示例代码:
<ProgressBar android:id="@+id/progressBar_customized" style="@style/CustomProgressBar" android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_margin="20dp" />
需要在styles.xml
文件中定义自定义进度条的样式:
<style name="CustomProgressBar" parent="@android:style/Widget.ProgressBar.Horizontal"> <item name="android:progressDrawable">@drawable/custom_progressbar_drawable</item> <item name="android:minHeight">20dp</item> <item name="android:maxHeight">20dp</item> </style>
在drawable
文件夹内添加一个自定义进度条的XML文件custom_progressbar_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="#e3e3e3" /> </shape> </item> <item android:id="@android:id/progress"> <clip> <shape> <corners android:radius="5dp" /> <solid android:color="#5CACEE" /> </shape> </clip> </item> </layer-list>
示例效果图如下:
![image](https://user-images.githubusercontent.com/29174713/123745139-1e317580-d8f2-11eb-92a8-05e837ac45e2.png)三、使用ProgressDialog实现进度条
ProgressDialog是一种对话框形式的进度条,通常用于表示应用程序正在执行耗时操作时,对用户进行提示。使用ProgressDialog实现进度条也非常简单,示例代码:
private ProgressDialog progressDialog; progressDialog = new ProgressDialog(this); progressDialog.setTitle("正在加载中"); progressDialog.setMessage("请稍后..."); progressDialog.setCancelable(false); progressDialog.show();
其中,setTitle()
设置对话框的标题;setMessage()
设置进度条下方的提示信息;setCancelable(false)
设置进度条不可取消;show()
显示对话框。需要注意的是,当执行完耗时操作后,需要使用dismiss()
方法关闭ProgressDialog。
四、进度条的进阶功能
1. 进度条的动态设置
可以通过setProgress()
方法来设置进度条的进度值,代码示例:
progressBar_horizontal.setProgress(50);
进度条的进度值可以通过getProgress()
方法来获取,示例代码:
int progress = progressBar_horizontal.getProgress();
2. 进度条的动画效果
可以通过setInterpolator()
方法来设置动画效果,示例代码:
progressBar_horizontal.setProgress(50); progressBar_horizontal.setInterpolator(new LinearInterpolator());
Android提供了多种Interpolator类,包括线性插值器(LinearInterpolator
)、加速插值器(AccelerateInterpolator
)、减速插值器(DecelerateInterpolator
)等。
3. 进度条的颜色修改
进度条的颜色可以通过修改XML文件中进度条的颜色来实现,示例代码:
<ProgressBar android:id="@+id/progressBar_customized" style="@style/CustomProgressBar" android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_margin="20dp" android:progressTint="@color/colorPrimaryDark" android:backgroundTint="@color/colorPrimary" />
其中,android:progressTint
属性设置进度条的颜色,android:backgroundTint
属性设置进度条的背景颜色。
4. 进度条的监听器
当进度条的值发生变化时,可以使用setOnSeekBarChangeListener()
方法设置监听器,示例代码:
progressBar_horizontal.setOnSeekBarChangeListener(new SeekBar.OnSeekBarChangeListener() { @Override public void onProgressChanged(SeekBar seekBar, int progress, boolean fromUser) { // 进度发生变化时执行的操作 } @Override public void onStartTrackingTouch(SeekBar seekBar) { // 触摸进度条时执行的操作 } @Override public void onStopTrackingTouch(SeekBar seekBar) { // 停止滑动时执行的操作 } });
需要注意的是,当进度发生变化时,回调函数onProgressChanged()
会被触发。
五、总结
通过本文的介绍,我们可以看到Android提供了多种不同的进度条实现方式,开发者可以根据自己的需要来选择合适的进度条样式和功能,并且可以通过动态设置、动画效果、颜色修改、监听器等高级功能来进一步完善进度条的功能。