老生常谈ProgressBar、ProgessDialog的用法
程序员文章站
2023-08-25 13:20:38
一、progressbar
1. 常用类型
1.1 不确定式圆形进度条
style="@android:style/widget.holo.light.pro...
一、progressbar
1. 常用类型
1.1 不确定式圆形进度条
style="@android:style/widget.holo.light.progressbar" style="@android:style/widget.devicedefault.light.progressbar.large" ...
没有显示进度,可作为过场动画。有大、中、小三种大小,默认为中。
1.2 条形进度条
style="@android:style/widget.progressbar.horizontal" style="@android:style/widget.devicedefault.light.progressbar.horizontal" ...
带有显示进度。
1.3 标题栏不确定式进度条
requestwindowfeature(window.feature_indeterminate_progress); setprogressbarindeterminatevisibility(true);
在标题栏右侧显示的无显示进度的圆形进度条。
1.4 标题栏条形进度条
requestwindowfeature(window.feature_progress); setprogressbarvisibility(true);
在标题栏顶部显示的条形进度条,可通过setprogess(int)设置当前进度,最大值为10000。
2. 常用控件属性
<!--最大显示进度--> android:max <!--第一显示进度--> android:progress <!--第二显示进度--> android:secondaryprogress <!--置是否精确显示;true为不精确,false为精确--> android:indeterminate <!--加载自定义样式--> android:progressdrawable
3. 自定义样式
通过控件的android:progressdrawable属性引用自定义的drawable文件实现。一般需定义三个内容:背景、第一进度、第二进度。
范例:
<?xml version="1.0" encoding="utf-8"?> <layer-list xmlns:android="http://schemas.android.com/apk/res/android"> <!--背景样式--> <item android:id="@android:id/background"> <shape> <!--圆角--> <corners android:radius="10dip" /> <!--填充色--> <solid android:color="#dddddd" /> </shape> </item> <!--第二进度样式--> <item android:id="@android:id/secondaryprogress"> <clip> <shape> <corners android:radius="10dip" /> <solid android:color="#78bb78" /> </shape> </clip> </item> <!--第一进度样式--> <item android:id="@android:id/progress"> <clip> <shape> <corners android:radius="10dip" /> <solid android:color="#55bb55" /> </shape> </clip> </item> </layer-list>
贴张效果图:
4. 关键方法
//设置第一进度 setprogress(int) //设置第二进度 setsecondaryprogress(int) //获取第一进度 getprogress() //获取第二进度 getsecondaryprogress() //增加或减少第一进度 incrementprogressby(int) //增加或减少第二进度 incrementsecondaryprogressby(int) //获取进度最大值 getmax()
5. 范例
布局比较简单,线性布局,竖直排列,这里就不贴代码了,直接贴张图:
java:
public class progessbaractivity extends activity implements view.onclicklistener{ private progressbar progressbar; private textview text; private button addfirst; private button addsecond; private button subfirst; private button subsecond; private button reset; private int first; private int second; private int max; @override protected void oncreate(bundle savedinstancestate) { super.oncreate(savedinstancestate); setcontentview(r.layout.activity_progess_bar); init(); } private void init() { progressbar = (progressbar) findviewbyid(r.id.progress_bar); text = (textview) findviewbyid(r.id.text); addfirst = (button) findviewbyid(r.id.add_first); subfirst = (button) findviewbyid(r.id.sub_first); addsecond = (button) findviewbyid(r.id.add_second); subsecond = (button) findviewbyid(r.id.sub_second); reset = (button) findviewbyid(r.id.reset); //获取第一、第二、最大进度 first = progressbar.getprogress(); second = progressbar.getsecondaryprogress(); max = progressbar.getmax(); addfirst.setonclicklistener(this); addsecond.setonclicklistener(this); subfirst.setonclicklistener(this); subsecond.setonclicklistener(this); reset.setonclicklistener(this); } @override public void onclick(view v) { switch (v.getid()) { case r.id.add_first: //第一进度加10 progressbar.incrementprogressby(10); break; case r.id.add_second: //第二进度加10 progressbar.incrementsecondaryprogressby(10); break; case r.id.sub_first: progressbar.incrementprogressby(-10); break; case r.id.sub_second: progressbar.incrementsecondaryprogressby(-10); break; case r.id.reset: //重置为初始数值 progressbar.setprogress(30); progressbar.setsecondaryprogress(60); break; } //更新文本内容 text.settext("第一进度为" + (int) (1.0*first/max*100) + "%,第二进度为" + (int) (1.0*second/max*100) + "%"); } }
二、progressdialog
1. 构造函数
progressdialog(context context) progressdialog(context context, int theme)//theme为对话框样式
2. 关键方法
//设置进度条样式 setprogressstyle(int style) //设置对话框标题 settitle(string title) //设置对话框本文信息 setmessage(charsequence message) //设置对话框图标 seticon(drawable d) //设置按钮,whichbutton为按钮类型,text为按钮名称,listener为监听器 setbutton(int whichbutton, charsequence text, onclicklistener listener) //显示对话框 show()
此外,除了这几个方法,progressdialog也可使用上面progressbar中介绍的方法。
3. 范例
public class progressdialogactivity extends activity { private progressdialog prodialog; @override protected void oncreate(bundle savedinstancestate) { super.oncreate(savedinstancestate); setcontentview(r.layout.activity_progress_dialog); findviewbyid(r.id.show).setonclicklistener(new view.onclicklistener() { @override public void onclick(view v) { //新建对话框 prodialog = new progressdialog(progressdialogactivity.this); //设置进度条样式 prodialog.setprogressstyle(progressdialog.style_horizontal); //设置对话框标题 prodialog.settitle("初识progressdialog"); //设置提示对话框文本 prodialog.setmessage("好好学习,天天向上!"); //设置对话框显示图标 prodialog.seticon(r.drawable.ic_launcher); //设置进度条最大进度,默认为10000 prodialog.setmax(100); //设置初始第一进度 prodialog.incrementprogressby(30); //设定取消按钮 prodialog.setbutton(dialoginterface.button_positive, "取消", new dialoginterface.onclicklistener() { @override public void onclick(dialoginterface dialog, int which) { dialog.cancel(); } }); //显示对话框 prodialog.show(); } }); } }
以上这篇老生常谈progressbar、progessdialog的用法就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持。