进度对话框 ProgressDialog 用法总结

ProgressDialog 继承自AlertDialog,AlertDialog继承自Dialog

public class ProgressDialog extends AlertDialog

ProgressDialog的创建方式有两种,一种是new ProgressDialog,一种是调用ProgressDialog的静态方法show()创建并显示,这种进度条只能是圆形条。



 ProgressDialog dialog = ProgressDialog.show(this, "提示", "正在登陆中…", true, false, null);

常用方法

  • setProgressStyle:设置进度条风格,风格为圆形,旋转的。
  • setTitlt:设置标题
  • setMessage:设置提示信息;
  • setIcon:设置标题图标;
  • setIndeterminate:设置ProgressDialog 的进度条是否不明确;这个属性对于ProgressDailog默认的转轮模式没有实际意义,默认下设置为true,它仅仅对带有ProgressBar的Dialog有作用。修改这个属性为false后可以实时更新进度条的进度。
  • setCancelable:设置ProgressDialog 是否可以按返回键取消;
  • cancelListner:当前Dialog强制取消之后将会被执行,通常用来清理未完成的任务。
  • setButton:设置ProgressDialog 的一个Button(需要监听Button事件);
  • show:显示ProgressDialog。
  • cancel:删除progressdialog
  • dismiss: 删除progressdialog 作用和cancel相同
  • setMax(int)、getMax:设置最大进度条的值
  • setProgress(int)、getProgress:更新进度条,当然一般都需要Handler的结合来更新进度条
  • incrementProgressBy(int)增加进度条
  • setProgressDrawable:设置progress发生变化时的进度指示条的背景图

Mainactivity

public class MainActivity extends ListActivity {

private ProgressDialog dialog;

private AlertDialog alertDialog;

private ProgressDialogFragment dialogFragment;

private Handler mHandler = new Handler() {

@Override

public void handleMessage(android.os.Message msg) {

switch (msg.what) {

case 0:

dialog.cancel();// cancel和dismiss唯一的区别是,调用cancel方法会【回调】OnCancelListener

break;

case 1:

int progress = (Integer) msg.obj;

if (progress < 20) {

dialog.incrementProgressBy(5);// 增加进度条的进度

mHandler.sendMessageDelayed(Message.obtain(mHandler, 1, progress + 1), 150);

} else dialog.dismiss();

break;

case 2:

alertDialog.dismiss();

break;

case 3:

getFragmentManager().beginTransaction().remove(dialogFragment).commit();

break;

}

};

};

protected void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

String[] array = { "ProgressDialog.STYLE_SPINNER:不确定的圆形滚动条",//

"ProgressDialog.STYLE_HORIZONTAL:确定的水平滚动条", //

"通过AlertDialog实现不确定圆形滚动条效果,其View包含一个ProgressBar",//

"通过DialogFragment实现不确定圆形滚动条效果,其View包含一个ProgressBar", };

setListAdapter(new ArrayAdapter<String>(this, android.R.layout.simple_list_item_1, new ArrayList<String>(Arrays.asList(array))));

Fragment fragment = getFragmentManager().findFragmentByTag("ProgressDialogFragment");

//旋转屏幕后dialogFragment为空,但是findFragmentByTag的结果不为空,所以dialogFragment将永远不会消失

if (fragment != null) {

if (dialogFragment == null) Toast.makeText(MainActivity.this, "dialogFragment为空,findFragmentByTag不为空", Toast.LENGTH_SHORT).show();

getFragmentManager().beginTransaction().remove(fragment).commit();

}

}

@Override

protected void onDestroy() {

super.onDestroy();

if (mHandler != null) mHandler.removeCallbacksAndMessages(null);

}

@Override

protected void onListItemClick(ListView l, View v, int position, long id) {

switch (position) {

case 0://旋转屏幕后直接消失

showPD();

mHandler.sendEmptyMessageDelayed(0, 3000);

break;

case 1://旋转屏幕后直接消失

showHorizontalPD();

mHandler.sendMessageDelayed(Message.obtain(mHandler, 1, 0), 150);

break;

case 2://旋转屏幕后直接消失

showAlertDialog();

mHandler.sendEmptyMessageDelayed(2, 3000);

break;

case 3://旋转屏幕后会重新创建

showDialogFragment();

mHandler.sendEmptyMessageDelayed(3, 3000);

break;

}

}

private void showPD() {

dialog = new ProgressDialog(this);

dialog.setProgressStyle(ProgressDialog.STYLE_SPINNER);//转盘

dialog.setCancelable(false);

dialog.setCanceledOnTouchOutside(false);

dialog.setTitle("提示");

dialog.setOnDismissListener(new DialogInterface.OnDismissListener() {

@Override

public void onDismiss(DialogInterface dialog) {

Toast.makeText(MainActivity.this, "消失了", Toast.LENGTH_SHORT).show();

}

});

dialog.setMessage("正在加载,请稍后……");

dialog.show();

}

private void showHorizontalPD() {

dialog = new ProgressDialog(this);

dialog.setProgressStyle(ProgressDialog.STYLE_HORIZONTAL);

dialog.setCancelable(true);

dialog.setCanceledOnTouchOutside(false);

dialog.setIcon(R.drawable.ic_launcher);//这里指的是标题左侧的图标。注意:如果没有设置title只设置Icon的话,是不会显示图标的

dialog.setTitle("提示");

dialog.setMax(100);

dialog.setButton(DialogInterface.BUTTON_POSITIVE, "确定…", new DialogInterface.OnClickListener() {

@Override

public void onClick(DialogInterface dialog, int which) {

Toast.makeText(MainActivity.this, "确定", Toast.LENGTH_SHORT).show();

}

});

dialog.setButton(DialogInterface.BUTTON_NEGATIVE, "取消…", new DialogInterface.OnClickListener() {

@Override

public void onClick(DialogInterface dialog, int which) {

Toast.makeText(MainActivity.this, "取消", Toast.LENGTH_SHORT).show();

}

});

dialog.setMessage("正在加载,请稍后……");

dialog.show();

}

private void showAlertDialog() {

alertDialog = new AlertDialog.Builder(this).setView(R.layout.layout).create();

alertDialog.getWindow().setBackgroundDrawableResource(android.R.color.transparent);//设置Dialog背景透明效果

alertDialog.show();

}

private void showDialogFragment() {

dialogFragment = ProgressDialogFragment.newInstance("加载中…");

dialogFragment.show(getFragmentManager(), "ProgressDialogFragment");

}

}

ProgressDialogFragment

public class ProgressDialogFragment extends DialogFragment {

/**构造时把传入的参数带进来,注意一定要通过Bundle及setArguments传递数据*/

public static ProgressDialogFragment newInstance(String message) {

Bundle bundle = new Bundle();//把所有需要传递的数据都放在Bundle中

bundle.putString("message", message);

ProgressDialogFragment dialog = new ProgressDialogFragment();

dialog.setArguments(bundle);//通过setArguments把Bundle传递过去

return dialog;

}

@SuppressLint("InflateParams")

@Override

public Dialog onCreateDialog(Bundle savedInstanceState) {

View contentView = getActivity().getLayoutInflater().inflate(R.layout.layout, null);

TextView tv_messag = (TextView) contentView.findViewById(R.id.tv_messag);

if (getArguments() != null && !TextUtils.isEmpty(getArguments().getString("message"))) {

tv_messag.setVisibility(View.VISIBLE);

tv_messag.setText(getArguments().getString("message"));

} else tv_messag.setVisibility(View.GONE);

Dialog dialog = new Dialog(getActivity());

dialog.requestWindowFeature(Window.FEATURE_NO_TITLE);//设置Dialog没有标题。需在setContentView之前设置,在之后设置会报错

dialog.getWindow().setBackgroundDrawableResource(android.R.color.transparent);//设置Dialog背景透明效果

dialog.setCancelable(false);

dialog.setContentView(contentView);

return dialog;

}

}

附件列表

时间: 2024-10-06 07:47:06

进度对话框 ProgressDialog 用法总结的相关文章

Android 进度对话框 ProgressDialog

protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); button = (Button) findViewById(R.id.button); button.setOnClickListener(new OnClickListener() { @Override public void onCl

进度对话框

一.进度对话框 ProgressDialog 1.用法 1-new progressDialog(Context) 2-setTitle (标题) 3-setMessage (信息) 4-show() 显示 5-setProgressStyle(ProgressDialog.STYLE_HORIZONTAL); 设置样式为水平进度 6-支持跨线程访问 2.多线程 1-负责执行耗时较长的业务代码,执行完之后在关闭进度对话框 2-用法 1°继承 1>继承Thread,重写run(),调用start(

3.4 复杂进度对话框

这一小节我们来给大家讲讲复杂进度对话框的用法,先看截图吧 大家一看就知道是一个带有下载进度的对话框,那么了解这个对话框常用用法如下 初始化进度条 设置图标.标题 设置进度条风格 设置进度条起始值 设置进度条每次增长值 这里我们就把ProgressDialog常用的代码方法也列举出来供大家参考 setIcon ,设置进度对话框的图标 setProgress, 设置进度对话框的起始值 setTitle, 设置进度对话框的标题 setProgressStyle, 设置进度对话框的样式 show, 显示

View(视图)——对话框之进度对话框

一.进度对话框  ProgressDialog 1.用法 1-new  progressDialog(Context) 2-setTitle (标题) 3-setMessage (信息) 4-show() 显示 5-setProgressStyle(ProgressDialog.STYLE_HORIZONTAL);  设置样式为水平进度 6-支持跨线程访问 2.多线程 1-负责执行耗时较长的业务代码,执行完之后在关闭进度对话框 2-用法 1°继承 1>继承Thread,重写run(),调用sta

View(视图)——进度对话框

一.进度对话框  ProgressDialog 1.用法 1-new  progressDialog(Context) 2-setTitle (标题) 3-setMessage (信息) 4-show() 显示 5-setProgressStyle(ProgressDialog.STYLE_HORIZONTAL);  设置样式为水平进度 6-支持跨线程访问 2.多线程 1-负责执行耗时较长的业务代码,执行完之后在关闭进度对话框 2-用法 1°继承 1>继承Thread,重写run(),调用sta

10.Android之ProgressDialog进度对话框学习

APP应用中经常会下载某些东西,这里面有涉及到进度对话框,今天来学习下. 首先,布局里放进两个按钮,点击一个显示条形进度条,另一个显示圆形进度条.代码如下: 1 <?xml version="1.0" encoding="utf-8"?> 2 <LinearLayout 3 android:id="@+id/LinearLayout01" 4 android:layout_width="match_parent&quo

进度条对话框ProgressDialog

进度条对话框ProgressDialog经常用于不能马上完成的操作,为了避免用户莫名其妙的等待,给用户一个提示. 本例中我们演示了两种进度条:条形进度条和圆形进度条. 一.设计界面 1.打开"res/layout/activity_main.xml"文件. 从工具栏向activity拖出2个按钮Button. 2.打开activity_main.xml文件. 代码如下: <LinearLayout xmlns:android="http://schemas.androi

Android开发系列(二十七):使用ProgressDialog创建进度对话框

进度对话框在平常的应用中很常见,比如下载的时候,打开页面的时候.转移文件等等.有环形的.有长条形的.基本就这两种 创建进度对话框的两种方式: 1.创建ProgressDialog实例,然后调用ProgressDialog提供的静态show()方法显示实例即可 2.创建ProgressDialog实例,然后调用方法对进度条进行设置,然后显示出来. 长条形的进度条还分为两种,第一种是显示进度,第二种是不显示进度. 在接下来的例子中,我们会看到三种:环形进度条.显示进度的长条形进度条.不显示进度的长条

2.5.6 使用progressDialog创建进度对话框

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="fill_parent" android:layout_height="fill_parent" android:layout_gravity="center" android:orientation="vertical&q