1、布局文件progress_dialog_activity.xml
<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical" > <Button android:id="@+id/btn_progress_dialog" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="@string/btn_progress_dialog_text" android:layout_gravity="center_horizontal"/> </LinearLayout>
2、Activity类ProgressDialogActivity.java
package cn.luxh.dialognew; 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 ProgressDialogActivity extends Activity { private Button btn_progress_dialog; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.progress_dialog_activity); handleBtnProgressDialogClick(); } /** * 处理按钮事件 */ private void handleBtnProgressDialogClick() { btn_progress_dialog = (Button) findViewById(R.id.btn_progress_dialog); btn_progress_dialog.setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { createProgressDialog(); } }); } /** * 生成进度对话框 */ private void createProgressDialog() { //显示进度对话框 final ProgressDialog progressDialog = ProgressDialog.show(this, "提示", "处理中..."); //业务处理 new Thread(new Runnable(){ @Override public void run() { try { Thread.sleep(10000); progressDialog.dismiss();//取消进度对话框 } catch (InterruptedException e) { e.printStackTrace(); } } }).start(); } }
3、运行效果
一个带实时进度的对话框
代码如下:
package cn.luxh.dialognew; import android.app.Activity; import android.app.ProgressDialog; import android.content.DialogInterface; import android.os.Bundle; import android.util.Log; import android.view.View; import android.view.View.OnClickListener; import android.widget.Button; import android.widget.Toast; public class ProgressDialogActivity extends Activity { private Button btn_progress_dialog; private ProgressDialog progressDialog; private static final String TAG = "ProgressDialogActivity"; //控制线程中断 private static boolean isRun = true; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.progress_dialog_activity); handleBtnProgressDialogClick(); } /** * 处理按钮事件 */ private void handleBtnProgressDialogClick() { btn_progress_dialog = (Button) findViewById(R.id.btn_progress_dialog); btn_progress_dialog.setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { isRun = true; createProgressDialog2(); progressDialog.show(); progressDialog.setProgress(0); new Thread(new Runnable(){ @Override public void run() { int i = 1; while(isRun && i<=20) { try { Log.d(TAG, "i is:"+i); Thread.sleep(1500); progressDialog.incrementProgressBy(100/20); i++; } catch (InterruptedException e) { isRun = false;//中断线程 e.printStackTrace(); } } } }).start(); } }); } /** * 生成进度对话框 */ private void createProgressDialog2() { progressDialog = new ProgressDialog(this); progressDialog.setIcon(R.drawable.ic_launcher); progressDialog.setTitle("实时进度..."); progressDialog.setProgressStyle(ProgressDialog.STYLE_HORIZONTAL); progressDialog.setCancelable(false);//设置模态窗口 progressDialog.setButton(ProgressDialog.BUTTON_POSITIVE, "确定", new DialogInterface.OnClickListener() { @Override public void onClick(DialogInterface dialog, int which) { isRun = false;//中断线程 Toast.makeText(getBaseContext(), "确定按钮被点击!", Toast.LENGTH_SHORT).show(); } }); progressDialog.setButton(ProgressDialog.BUTTON_NEGATIVE, "取消", new DialogInterface.OnClickListener() { @Override public void onClick(DialogInterface dialog, int which) { isRun = false;//中断线程 Toast.makeText(getBaseContext(), "取消按钮被点击!", Toast.LENGTH_SHORT).show(); } }); } }
运行效果: