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();
}
});
}
}
运行效果: