进度处理对话框ProgressDialog
在处理耗时较长的操作时,往往会显示一个等待的对话框,此时可以通过进度处理对话框(ProgressDialog)显示操作进度的情况。ProgressDialog类的常用方法和常量有:
(1)常量,水平进度显示风格:public static final int STYLE_HORIZONTAL
(2)常量,环形进度显示风格:public static final int STYLE_SPINNER
(3)创建进度对话框:public ProgressDialog(Context context)
(4)设置显示信息:public void setMessage(CharSequence message)
(5)启动进度框:public void onStart()
(6)设置进度条的显示风格:public void setProgressStyle(int style)
(7)直接创建进度对话框,指定对话框的标题及信息
Public staticProgressDialog show(Context context, CharSequence title, CharSequence message)
(8)设置进度条每次增长的值:public void incrementProgressBy(int diff)
(9)设置进度条的最大增长值:public void setMax(int max)
(10)设置当前进度:public void setProgress(int value)
例 1 本程序会显示一个界面,只要用户点击界面上的按钮,就会出现一个查找等待的对话框。程序运行效果截图
实现过程:
1. 编写main.xml布局管理器
<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:orientation="vertical" android:layout_width="fill_parent" android:layout_height="fill_parent" android:background="#00ff00"> <Button android:id="@+id/button" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="连接网络"/> </LinearLayout>
2. 编写MainActivity.java
import android.app.Activity; import android.app.ProgressDialog; import android.os.Bundle; import android.view.View; import android.view.View.OnClickListener; import android.widget.Button; public class MainActivity extends Activity { private Button button = null; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); button = (Button)findViewById(R.id.button); button.setOnClickListener(new OnClickListenerImpl()); } private class OnClickListenerImpl implements OnClickListener{ @Override public void onClick(View v){ final ProgressDialog dialog = new ProgressDialog(MainActivity.this); dialog.setTitle("搜索网络"); //设置标题 dialog.setMessage("请耐心等待..."); //设置显示信息 dialog.onStart(); //启动进度条 new Thread(){ //创建进度条对象 public void run(){ try{ Thread.sleep(5000); //5秒钟后关闭对话框 }catch(Exception e){ }finally{ dialog.dismiss(); //关闭对话框 } }}.start(); //启动线程 dialog.show(); //显示对话框 } } }
默认情况下,进度对话框(ProgressDialog)采用的是环形进度条(STYLE_SPINNER)的显示风格,用户也可以根据需要改成水平(STYLE_HORIZONTAL)显示风格。
例 2 设置进度条风格为水平显示风格(布局文件和上个例子一样)
程序运行效果截图
实现过程:(布局文件和上个例子一样)
下面编写MainActivity.java
import android.app.Activity; import android.app.ProgressDialog; import android.content.DialogInterface; import android.os.Bundle; import android.view.View; import android.view.View.OnClickListener; import android.widget.Button; public class MainActivity extends Activity { private Button button = null; private static final int MAX_PROGRESS = 100; //最大进度值 @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); button = (Button)findViewById(R.id.button); button.setOnClickListener(new OnClickListenerImpl()); } private class OnClickListenerImpl implements OnClickListener{ @Override public void onClick(View v){ final ProgressDialog dialog = new ProgressDialog(MainActivity.this); dialog.setTitle("搜索网络"); //设置标题 dialog.setMessage("请耐心等待..."); //设置显示信息 dialog.setProgressStyle(ProgressDialog.STYLE_HORIZONTAL); //水平进度条 dialog.setMax(MAX_PROGRESS); //设置最大进度值 dialog.setProgress(10); dialog.setButton("后台处理", new DialogInterface.OnClickListener() { @Override public void onClick(DialogInterface dialog, int which) { dialog.dismiss(); //关闭对话框 } }); dialog.setButton2("详细信息", new DialogInterface.OnClickListener() { @Override public void onClick(DialogInterface dialog, int which) { } }); dialog.onStart(); //启动进度条 new Thread(){ //创建进度条对象 public void run(){ //线程主体方法 for(int k = 0; k < MAX_PROGRESS; k++){ try{ Thread.sleep(100); //休眠0.1秒 }catch(InterruptedException e){ e.printStackTrace(); } dialog.incrementProgressBy(1); //进度每次增 1 } dialog.dismiss(); //关闭对话框 }}.start(); //启动线程 dialog.show(); //显示对话框 } } }