今天来讲一下进度条(其实包含了刷新圈),主要讲基本常用的一些方法,先看一下图片就知道大概要讲的是什么了
1.基本的使用方法
默认的进度条是一个旋转的刷新圈,即没有参数的情况下
<ProgressBar
android:id="@+id/pb2"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="10dp"
style="@android:style/Widget.ProgressBar"/>
<ProgressBar
android:id="@+id/pb3"
android:layout_width="match_parent"
android:layout_height="20dp"
android:layout_marginTop="10dp"
style="@style/Widget.AppCompat.ProgressBar.Horizontal"
/>
如上的代码写出来是两个转动的圆弧,效果如下:
但是要写一个进度条要怎么写呢
<ProgressBar
android:id="@+id/pb3"
android:layout_width="match_parent"
android:layout_height="20dp"
android:layout_marginTop="10dp"
style="@style/Widget.AppCompat.ProgressBar.Horizontal"
/>//进行进度条的风格的设置
<ProgressBar
android:id="@+id/pb4"
android:layout_width="match_parent"
android:layout_height="20dp"
android:layout_marginTop="10dp"
style="@android:style/Widget.ProgressBar.Horizontal"
android:max="100" //进度条的最大长度
android:progress="10" //进度条的选择长度
android:secondaryProgress="30"//进度条的第二选择长度/>
需要设置style来换成进度条的风格来进行操作。效果如下:
2.进度条的控制函数
举例设置一个button来操作进度条,来进行进度条的进度显示。
pb3.setProgress(30);//设置进度条的进度
//设置按钮的点击事件,进行点击完成对相应进度条的进度设置
bt1.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
handler.sendEmptyMessage(0);//设置操作处理
}
});
Handler handler=new Handler(){
public void handleMessage(Message msg){
super.handleMessage((msg));
if (pb3.getProgress()<100){//判断是否小于最大值
handler.postDelayed(runnable,500);//延迟500ms进行调用函数
}else {
ToastUtil.showMessage(ProgressActivity.this,"加载完成");
//进度条加载完成的函数
}
}
};
Runnable runnable=new Runnable() {
@Override
public void run() {
pb3.setProgress(pb3.getProgress()+5);//每次设置进度条+5
handler.sendEmptyMessage(0);
}
};
效果如下:当点击按钮的时候会进行进度条的补充,知道补充完整个进度条然后弹出一个提示“加载完成 ”
3.自定义进度条
自定义的布局文件bg_progress
<?xml version="1.0" encoding="utf-8"?>
<animated-rotate xmlns:android="http://schemas.android.com/apk/res/android"
android:drawable="@drawable/progress"//使用自定义的图片
android:pivotX="50%"//旋转中心的X坐标
android:pivotY="50%"//旋转中心的Y坐标
>
</animated-rotate>
对应的progress组件代码
<ProgressBar
android:id="@+id/pb5"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="20dp"
android:indeterminateDrawable="@drawable/bg_progress"//在这里引用自定义的布局文件
style="@android:style/Widget.ProgressBar"/>
使用的是自己一个自定义的图片来进行旋转,效果如下图:
4.进度条弹出框ProgressBar
在一般使用中还会用到弹出一个刷新圈的提示框,或者进度条来显示任务的完成情况。
用法类似于Dialog
主要定义在 activity文件中,代码如下,
(1)先做刷新圈的转动显示提示组件
bt2.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
ProgressDialog progressDialog=new ProgressDialog(ProgressActivity.this);
progressDialog.setTitle("提示:"); //提示框的标题
progressDialog.setMessage("正在加载...");//提示框的内容信息
progressDialog.setOnCancelListener(new DialogInterface.OnCancelListener() {
@Override
public void onCancel(DialogInterface dialogInterface) {
ToastUtil.showMessage(ProgressActivity.this,"cancel...");
}
});
progressDialog.setCancelable(false);//是否可以点击取消
progressDialog.show();
}
});
效果如下:
(2)进度条的弹出显示
bt3.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
ProgressDialog progressDialog=new ProgressDialog(ProgressActivity.this);
progressDialog.setProgressStyle(ProgressDialog.STYLE_HORIZONTAL);
progressDialog.setTitle("提示:");
progressDialog.setMessage("正在下载...");
progressDialog.setProgress(50);
progressDialog.setMax(100);
progressDialog.setButton(DialogInterface.BUTTON_POSITIVE, "下载完成", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialogInterface, int i) {
ToastUtil.showMessage(ProgressActivity.this,"下载完成了");
}
});
progressDialog.setOnCancelListener(new DialogInterface.OnCancelListener() {
@Override
public void onCancel(DialogInterface dialogInterface) {
ToastUtil.showMessage(ProgressActivity.this,"cancel...");
}
});
progressDialog.setCancelable(false);
progressDialog.show();
}
});
效果如下: