Android ProgressDialog使用总结
程序员文章站
2023-12-21 19:13:28
progressdialog 继承自alertdialog,alertdialog继承自dialog,实现dialoginterface接口。
progressdialo...
progressdialog 继承自alertdialog,alertdialog继承自dialog,实现dialoginterface接口。
progressdialog的创建方式有两种,一种是new dialog ,一种是调用dialog的静态方法dialog.show()。
// 方式一:new dialog final progressdialog dialog = new progressdialog(this); dialog.show(); // 方式二:使用静态方式创建并显示,这种进度条只能是圆形条,设置title和message提示内容 progressdialog dialog2 = progressdialog.show(this, "提示", "正在登陆中"); // 方式三 使用静态方式创建并显示,这种进度条只能是圆形条,这里最后一个参数boolean indeterminate设置是否是不明确的状态 progressdialog dialog3 = progressdialog .show(this, "提示", "正在登陆中", false); // 方式四 使用静态方式创建并显示,这种进度条只能是圆形条,这里最后一个参数boolean cancelable 设置是否进度条是可以取消的 progressdialog dialog4 = progressdialog.show(this, "提示", "正在登陆中", false, true); // 方式五 使用静态方式创建并显示,这种进度条只能是圆形条,这里最后一个参数 dialoginterface.oncancellistener // cancellistener用于监听进度条被取消 progressdialog dialog5 = progressdialog.show(this, "提示", "正在登陆中", true, true, cancellistener);
方式五中需要一个cancellistener,代码如下;
private oncancellistener cancellistener = new oncancellistener() { @override public void oncancel(dialoginterface dialog) { // todo auto-generated method stub toast.maketext(mainactivity.this, "进度条被取消", toast.length_long) .show(); } };
progressdialog的样式有两种,一种是圆形不明确状态,一种是水平进度条状态
第一种方式:圆形进度条
final progressdialog dialog = new progressdialog(this); dialog.setprogressstyle(progressdialog.style_spinner);// 设置进度条的形式为圆形转动的进度条 dialog.setcancelable(true);// 设置是否可以通过点击back键取消 dialog.setcanceledontouchoutside(false);// 设置在点击dialog外是否取消dialog进度条 dialog.seticon(r.drawable.ic_launcher);// // 设置提示的title的图标,默认是没有的,如果没有设置title的话只设置icon是不会显示图标的 dialog.settitle("提示"); // dismiss监听 dialog.setondismisslistener(new dialoginterface.ondismisslistener() { @override public void ondismiss(dialoginterface dialog) { // todo auto-generated method stub } }); // 监听key事件被传递给dialog dialog.setonkeylistener(new dialoginterface.onkeylistener() { @override public boolean onkey(dialoginterface dialog, int keycode, keyevent event) { // todo auto-generated method stub return false; } }); // 监听cancel事件 dialog.setoncancellistener(new dialoginterface.oncancellistener() { @override public void oncancel(dialoginterface dialog) { // todo auto-generated method stub } }); //设置可点击的按钮,最多有三个(默认情况下) dialog.setbutton(dialoginterface.button_positive, "确定", new dialoginterface.onclicklistener() { @override public void onclick(dialoginterface dialog, int which) { // todo auto-generated method stub } }); dialog.setbutton(dialoginterface.button_negative, "取消", new dialoginterface.onclicklistener() { @override public void onclick(dialoginterface dialog, int which) { // todo auto-generated method stub } }); dialog.setbutton(dialoginterface.button_neutral, "中立", new dialoginterface.onclicklistener() { @override public void onclick(dialoginterface dialog, int which) { // todo auto-generated method stub } }); dialog.setmessage("这是一个圆形进度条"); dialog.show(); new thread(new runnable() { @override public void run() { // todo auto-generated method stub try { thread.sleep(5000); // cancel和dismiss方法本质都是一样的,都是从屏幕中删除dialog,唯一的区别是 // 调用cancel方法会回调dialoginterface.oncancellistener如果注册的话,dismiss方法不会回掉 dialog.cancel(); // dialog.dismiss(); } catch (interruptedexception e) { // todo auto-generated catch block e.printstacktrace(); } } }).start();
其中通过thread.sleep(5000)模拟后台操作。
cancel和dismiss方法本质都是一样的,都是从屏幕中删除dialog,唯一的区别是:调用cancel方法会回调dialoginterface.oncancellistener如果注册的话,dismiss方法不会回掉。
第二种方式:水平进度条
// 进度条还有二级进度条的那种形式,这里就不演示了 final progressdialog dialog = new progressdialog(this); dialog.setprogressstyle(progressdialog.style_horizontal);// 设置水平进度条 dialog.setcancelable(true);// 设置是否可以通过点击back键取消 dialog.setcanceledontouchoutside(false);// 设置在点击dialog外是否取消dialog进度条 dialog.seticon(r.drawable.ic_launcher);// 设置提示的title的图标,默认是没有的 dialog.settitle("提示"); dialog.setmax(100); dialog.setbutton(dialoginterface.button_positive, "确定", new dialoginterface.onclicklistener() { @override public void onclick(dialoginterface dialog, int which) { // todo auto-generated method stub } }); dialog.setbutton(dialoginterface.button_negative, "取消", new dialoginterface.onclicklistener() { @override public void onclick(dialoginterface dialog, int which) { // todo auto-generated method stub } }); dialog.setbutton(dialoginterface.button_neutral, "中立", new dialoginterface.onclicklistener() { @override public void onclick(dialoginterface dialog, int which) { // todo auto-generated method stub } }); dialog.setmessage("这是一个水平进度条"); dialog.show(); new thread(new runnable() { @override public void run() { // todo auto-generated method stub int i = 0; while (i < 100) { try { thread.sleep(200); // 更新进度条的进度,可以在子线程中更新进度条进度 dialog.incrementprogressby(1); // dialog.incrementsecondaryprogressby(10)//二级进度条更新方式 i++; } catch (exception e) { // todo: handle exception } } // 在进度条走完时删除dialog dialog.dismiss(); } }).start();
关于android progressdialog使用总结的相关知识就给大家介绍到这里,后续还会持续更新,请持续关注网站,谢谢!
推荐阅读