现在的位置: 首页 > 综合 > 正文

31_进度处理对话框(ProgressDialog)

2013年11月27日 ⁄ 综合 ⁄ 共 3575字 ⁄ 字号 评论关闭

进度处理对话框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();   //显示对话框
		}
	}
}

抱歉!评论已关闭.