Android 对话框 Dialog使用实例讲解
程序员文章站
2024-03-07 09:37:14
对话框 dialog
什么是对话框
对话框是在当前的页面之上弹出的小窗口, 用于显示一些重要的提示信息, 提示用户的输入,确认信息,或显示某种状态.如 : 显示进度条对...
对话框 dialog
什么是对话框
对话框是在当前的页面之上弹出的小窗口, 用于显示一些重要的提示信息, 提示用户的输入,确认信息,或显示某种状态.如 : 显示进度条对话框, 退出提示.
对话框的特点:
1, 当前界面弹出的小窗口.
2, 用户要与它进行交互, 可以接收用户输入的信息, 也可以反馈信息给用户.
常用对话框:
1, 普通对话框 alertdialog
2, 进度条对话框 progressdialog
3, 日期对话框 datepickerdialog
4, 时间对话框 timepickerdialog
5, 自定义对话框
常用普通对话框 alertdialog
1, 普通列表对话框 setitems -- onclicklistener
2, 单选对话框 setsinglechoiceitems -- onclicklistener
3, 多选对话框 setmultichoiceitems --- > onmultichoiceclicklistener
4, 适配器对话框 setadapter -- onclicklistener
package com.qf.day11_dialog_01; import java.util.calendar; import android.app.activity; import android.app.alertdialog; import android.app.datepickerdialog; import android.app.datepickerdialog.ondatesetlistener; import android.app.progressdialog; import android.app.timepickerdialog; import android.app.timepickerdialog.ontimesetlistener; import android.content.dialoginterface; import android.content.dialoginterface.onclicklistener; import android.os.bundle; import android.view.view; import android.widget.datepicker; import android.widget.edittext; import android.widget.timepicker; import android.widget.toast; public class mainactivity extends activity { private edittext name; private edittext pwd; @override protected void oncreate(bundle savedinstancestate) { super.oncreate(savedinstancestate); setcontentview(r.layout.activity_main); } public void showalertdialog(view v) { //1, 定义普通对话框的构建者 alertdialog.builder builder = new alertdialog.builder(mainactivity.this); //2, 构建对话框 builder.seticon(r.drawable.img_23);//设置图标 builder.settitle("提示");//设置标题 builder.setmessage("是否确认退出?");//设置内容 //设置取消按钮 /** * text 按钮显示的文字 * listener 按钮对应的监听器 */ builder.setnegativebutton("取消", null); //设置确定按钮 builder.setpositivebutton("确定", new onclicklistener() { @override public void onclick(dialoginterface dialog, int which) { finish(); } }); //3, 显示对话框 builder.show(); } public void showprogressdialog(view v) { //1, 得到progressdialog的对象 progressdialog pdialog = new progressdialog(this); //2, 构建对话框 pdialog.seticon(r.drawable.img_14); pdialog.settitle("提示"); pdialog.setmessage("正在加载, 请稍后...."); pdialog.setcancelable(true);//是否可撤销 true 可以 false 不可以 //设置进度条对话框的样式 //progressdialog.style_horizontal 水平的 //progressdialog.style_spinner 转圈的 pdialog.setprogressstyle(progressdialog.style_horizontal); //3, 显示对话框 pdialog.show(); //pdialog.dismiss();//对话框消失 pdialog.setprogress(50);//设置进度值, 在显示对话后,才可以设置 } public void showdatepickerdialog(view v) { //获取系统的当前日期 calendar calendar = calendar.getinstance(); int year = calendar.get(calendar.year); int monthofyear = calendar.get(calendar.month); int dayofmonth = calendar.get(calendar.day_of_month); //1, 创建带有日期选择器的对话框 /** * context 上下文对象 * callback ondatesetlistener(日期选择器上的"确定"按钮监听器) * year 默认的年 * monthofyear 默认的月份 * dayofmonth 默认的日期 */ datepickerdialog dpdialog = new datepickerdialog(this,new ondatesetlistener() { /** * datepicker view 日期选择器 */ @override public void ondateset(datepicker view, int year, int monthofyear, int dayofmonth) { //选择后的日期监听 toast.maketext(mainactivity.this, year+"-"+(monthofyear+1)+"-"+dayofmonth, toast.length_short).show(); } }, year, monthofyear, dayofmonth); //2, 显示对话框 dpdialog.show(); } public void showtimepickerdialog(view v) { //1, 创建带有时间选择器的对话框 /** * context 上下文对象 * callback ontimesetlistener * hourofday 默认的小时 * minute 默认的分钟数 * is24hourview 是否24小时制 */ timepickerdialog tpdialog = new timepickerdialog(this, new ontimesetlistener() { @override public void ontimeset(timepicker view, int hourofday, int minute) { toast.maketext(mainactivity.this, hourofday + " :" + minute, toast.length_short).show(); } }, 15, 17, true); //2, 显示对话框 tpdialog.show(); } //自定义对话框(在普通对话框基础上实现) public void showcustomdialog(view v) { //1, 得到普通对话框的构建者 alertdialog.builder builder = new alertdialog.builder(this); //2, 构建对话框 builder.seticon(r.drawable.img_23); builder.settitle("用户登陆"); //3, 为对话框设置自定义的视图 view view = getlayoutinflater().inflate(r.layout.login, null); name = (edittext) view.findviewbyid(r.id.name); pwd = (edittext) view.findviewbyid(r.id.pwd); builder.setview(view); //为对话框添加 按钮 builder.setnegativebutton("取消", null); builder.setpositivebutton("登陆", new onclicklistener() { @override public void onclick(dialoginterface dialog, int which) { string info = name.gettext().tostring()+", "+ pwd.gettext().tostring(); toast.maketext(mainactivity.this, info, toast.length_short).show(); } }); //4, 显示对话框 builder.show(); } }
package com.qf.day11_dialog_02; import android.app.activity; import android.app.alertdialog; import android.content.dialoginterface; import android.content.intent; import android.content.dialoginterface.onclicklistener; import android.content.dialoginterface.onmultichoiceclicklistener; import android.graphics.color; import android.os.bundle; import android.view.view; import android.widget.arrayadapter; import android.widget.textview; public class mainactivity extends activity { private textview tv; private int position;//单选列表的 中间转接 @override protected void oncreate(bundle savedinstancestate) { super.oncreate(savedinstancestate); setcontentview(r.layout.activity_main); tv = (textview) findviewbyid(r.id.tv); } //普通列表对话框 public void showcommon(view v) { //1, 得到普通对话框的构建者 alertdialog.builder builder = new alertdialog.builder(this); builder.seticon(r.drawable.ic_launcher); builder.settitle("选择颜色"); //2, 设置列表 //getresources().getstringarray(id) builder.setitems(r.array.colors, new onclicklistener() { /** * dialoginterface dialog 对话框 * int which 当前选中的item 从0开始 */ @override public void onclick(dialoginterface dialog, int which) { switch (which) { case 0: tv.settextcolor(color.red); break; case 1: tv.settextcolor(color.green); break; case 2: tv.settextcolor(color.blue); break; } } }); //3, 显示对话框 builder.show(); } //单选列表 public void showsingle(view v) { //1, 得到普通对话框的构建者 alertdialog.builder builder = new alertdialog.builder(this); builder.seticon(r.drawable.ic_launcher); builder.settitle("设置文字大小"); //2, 设置单选列表 /** * items 选项资源的id r.array.sizes * checkeditem 默认选中的item的下标, 如果没有默认选中, 那么设置为-1 * listener 监听器 */ builder.setsinglechoiceitems(r.array.sizes, -1, new onclicklistener() { @override public void onclick(dialoginterface dialog, int which) { // 把当前选中的item的下标 赋值给全局的变量 position position = which; } }); builder.setpositivebutton("确定", new onclicklistener() { @override public void onclick(dialoginterface dialog, int which) { // todo 根据全局的position 判断该执行什么样的操作 switch (position) { case 0: tv.settextsize(20); break; case 1: tv.settextsize(30); break; case 2: tv.settextsize(40); break; } } }); //3, 显示对话框 builder.show(); } //多选列表 public void showmulti(view v) { //1, 得到普通对话框的构建者 alertdialog.builder builder = new alertdialog.builder(this); builder.seticon(r.drawable.ic_launcher); builder.settitle("设置内容"); //2, 设置多选列表 /** * items 资源的id * checkeditems 当前选中的item * listener 监听器 */ //得到所有的数据 final string[] hobbys = getresources().getstringarray(r.array.hobbys); //选中的item final boolean[] checkeditems = new boolean[hobbys.length]; builder.setmultichoiceitems(r.array.hobbys, checkeditems, new onmultichoiceclicklistener() { /** * dialoginterface dialog 当前对话框 * int which 当前选择的item下标 * boolean ischecked 当前选择item的状态 */ @override public void onclick(dialoginterface dialog, int which, boolean ischecked) { //改变boolean[] 中状态 checkeditems[which] = ischecked; } }); builder.setpositivebutton("确定", new onclicklistener() { @override public void onclick(dialoginterface dialog, int which) { stringbuilder sbuilder = new stringbuilder(); for(int i=0;i<checkeditems.length;i++) { if(checkeditems[i]) { sbuilder.append(hobbys[i]).append(" "); } } tv.settext(sbuilder.tostring()); } }); //3, 显示对话框 builder.show(); } //适配器列表 public void showadapter(view v) { //1, 得到普通对话框的构建者 alertdialog.builder builder = new alertdialog.builder(this); builder.seticon(r.drawable.ic_launcher); builder.settitle("选择设置"); //2, 设置适配器 string[] data = getresources().getstringarray(r.array.settings); arrayadapter<string> adapter = new arrayadapter<string>(this, android.r.layout.simple_list_item_1, data); builder.setadapter(adapter, new onclicklistener() { @override public void onclick(dialoginterface dialog, int which) { intent intent = new intent(); switch (which) { case 0: intent.setaction("android.settings.wifi_settings"); break; case 1: intent.setaction("android.settings.sound_settings"); break; case 2: intent.setaction("android.settings.settings"); break; } startactivity(intent); } }); //3, 显示对话框 //builder.show(); builder.create().show(); } }
以上所述是小编给大家介绍的android 对话框 dialog使用实例讲解,希望对大家有所帮助