当前位置: 移动技术网 > IT编程>移动开发>Android > Android ProgressDialog使用总结

Android ProgressDialog使用总结

2019年07月24日  | 移动技术网IT编程  | 我要评论

精英论坛,死囚乐园第二季,norse attack map

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使用总结的相关知识就给大家介绍到这里,后续还会持续更新,请持续关注移动技术网网站,谢谢!

如对本文有疑问,请在下面进行留言讨论,广大热心网友会与你互动!! 点击进行留言回复

相关文章:

验证码:
移动技术网