本文实例讲述了Android开发之ProgressDialog进度对话框用法。分享给大家供大家参考,具体如下:
使用方法:
如果只是普通进度对话框 | 直接调用ProgressDialog静态方法 show() 即可 |
创建ProgressDialog | 调用方法进行具体设置 |
setIndeterminate(false); |
设置进度条是否显示进度 |
setMax(MAX_PROGRESS); |
设置进度条的最大值 |
setMessage("..."); |
设置对话框执行内容 |
setProgressStyle(ProgressDialog.STYLE_HORIZONTAL) |
设置对话框进度条风格 |
setProgress() |
设置 进度条内的进度值(当前) |
效果:
代码实现:
主要是两种类型
1.带耗时操作 showIndeterminate
2.不带耗时操作 showProgress
具体实现:
public class MainActivity extends Activity {
final static int MAX_PROGRESS = 100;
//虚拟 填充长度为100的数组
private int[] data = new int[50];
//记录进度对话框完成百分比
int progressStatus = 0;
int hasDta = 0;
ProgressDialog progressDialog01,progressDialog02;
private Button buttonDate;
private Button buttonTime;
//创建一个负责更新进度的Handler
Handler mHandler = new Handler(){
@Override
public void handleMessage(Message msg) {
//表明消息是本程序发送的
if (msg.what == 0x111){
progressDialog02.setProgress(progressStatus);
}
}
};
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
buttonDate = (Button) findViewById(R.id.dataBn);
buttonTime = (Button) findViewById(R.id.timeBn);
iniClick();//Binding the listeners for you program
}
public void showSpinner(View source){
//用静态方法显示环形进度条
ProgressDialog.show(this,"任务执行中","热内执行中 请等待...",false,true);
}
public void showIndeterminate(View source){
progressDialog01 = new ProgressDialog(MainActivity.this);
//设置对话框标题
progressDialog01.setTitle("任务正在执行中");
//设置对话框执行内容
progressDialog01.setMessage("任务正在执行中敬请等待~~~");
//设置对话框“取消” 按钮关闭
progressDialog01.setCancelable(true);
//设置对话框进度条风格
progressDialog01.setProgressStyle(ProgressDialog.STYLE_HORIZONTAL);
//设置进度条是否显示进度
progressDialog01.setIndeterminate(true);
progressDialog01.show();
}
public void showProgress(View source){
//将进度条完成重设为0
progressStatus = 0;
//重新开始填充数组
hasDta = 0;
progressDialog02 = new ProgressDialog(MainActivity.this);
progressDialog02.setMax(MAX_PROGRESS);
//设置对话框标题
progressDialog02.setTitle("任务正在执行中");
//设置对话框执行内容
progressDialog02.setMessage("任务正在执行中敬请等待~~~");
//设置对话框“取消” 按钮关闭
progressDialog02.setCancelable(false);
//设置对话框进度条风格
progressDialog02.setProgressStyle(ProgressDialog.STYLE_HORIZONTAL);
//设置进度条是否显示进度
progressDialog02.setIndeterminate(false);
progressDialog02.show();
new Thread(){//模拟耗时操作
@Override
public void run() {
while (progressStatus < MAX_PROGRESS){
//bar1获取完成工作的百分比
progressStatus += (int) (Math.random()*15);
try{
Thread.sleep(1000);
}catch (InterruptedException e){
e.printStackTrace();
}
//更新ProgressBar
mHandler.sendEmptyMessage(0x111);
}
//任务完成进度条关闭
progressDialog02.dismiss();
}
}.start();
}
public void iniClick(){
//set listener for your Date button
buttonDate.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
showIndeterminate(MainActivity.this.getWindow().getDecorView());
}
});
//set listener for your Time button
buttonTime.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
showProgress(MainActivity.this.getWindow().getDecorView());
}
});
}
}
以下是布局文件:
<?xml version="1.0" encoding="utf-8" ?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/idtatabHost"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="horizontal"
android:layout_weight="1">
<Button
android:id="@+id/dataBn"
android:text="一般进度条"
android:layout_width="0dp"
android:layout_weight="1"
android:layout_height="wrap_content" />
<Button
android:id="@+id/timeBn"
android:text="带耗时进度条"
android:layout_width="0dp"
android:layout_weight="1"
android:layout_height="wrap_content" />
</LinearLayout>
更多关于Android相关内容感兴趣的读者可查看本站专题:《Android开发入门与进阶教程》、《Android调试技巧与常见问题解决方法汇总》、《Android基本组件用法总结》、《Android视图View技巧总结》、《Android布局layout技巧总结》及《Android控件用法总结》
希望本文所述对大家Android程序设计有所帮助。