第10章-对话框和通知

整理文档很辛苦,赏杯茶钱您下走!

免费阅读已结束,点击下载阅读编辑剩下 ...

阅读已结束,您可以下载文档离线阅读编辑

资源描述

1第10章对话框和通知【学习目标】创建对话框自定义对话框使用Notification发送提醒使用Toast做提示信息2Dialog和Notification在Android应用的使用过程中会频繁出现。当有短信出现时会在标题栏位置有Notification出现,当用户退出程序时会有是否退出程序的确认对话框。本章就围绕这两个概念,让大家对对话框和notification有一个比较系统的认识。对话框在程序开发中使用广泛,大致可以分为以下四种类型:(1)一般对话框:让用户选择一个项目或者输入一些数据的对话框,该类对话框包含:标题,操作内容,操作按钮(一般为确定,取消)(2)警示对话框:提示性质的对话框。用户只需要根据按钮选择就可以了。一般包含:标题,提示信息,操作按钮(3)弹出式对话框:一个操作的列表,点击选项即可操作。(4)提示信息Toast1.1对话框对话框可以分为一般对话框,多选对话框,单选对话框,自定义布局对话框,带有对话框主题的Activity对话框。1.1.1一般对话框当用户点击返回按键退出程序时,一般情况下回弹出一个对话框提示用户是否退出程序(现在也比较流行在一段时间内双击返回退出程序);当用户删除某个重要资料的时候也会提示用户是否确定要删除该资料。在这些情况下,对话框的出现可以有效的提高用户的体验,也会防止误操作的发生。这样的简单对话框一般有着如下图的显示效果:3实现该效果的代码如下:publicvoidopenAlertDialog(){AlertDialogdialog=null;AlertDialog.Builderbuilder=newAlertDialog.Builder(this);builder.setTitle(是否退出当前对话框?);builder.setMessage(该对话框是用来做一个提示作用的。);builder.setNegativeButton(否,newDialogInterface.OnClickListener(){@OverridepublicvoidonClick(DialogInterfacedialog,intwhich){dialog.dismiss();}4});builder.setPositiveButton(是,newDialogInterface.OnClickListener(){@OverridepublicvoidonClick(DialogInterfacedialog,intwhich){dialog.dismiss();}});dialog=builder.create();dialog.show();}AlertDialog是提示类对话框,也称为一般对话框。该类的构造方法都是受保护的,只有在继承自该类的时候才可以使用,如果要创建提示对话框的实例必须要使用AlertDialog的静态内部类AlertDialog.Builder。AlertDialog.Builder提供了如下方法来创建AlertDialog的配置。AlertDialog.Builder(Contextcontext)AlertDialog.Builder(Contextcontext,inttheme)AlertDialog.Builder的两个构造方法setAdapter(ListAdapteradapter,DialogInterface.OnClickListenerlistener)使用适配器来配置list对话框setCancelable(booleancancelable)设置对话框能否在返回键按下的时候退出setMessage(CharSequencemessage)5设置对话框的提示内容。setMultiChoiceItems(CharSequence[]items,boolean[]checkedItems,DialogInterface.OnMultiChoiceClickListenerlistener)设置多选对话框。setNegativeButton(CharSequencetext,DialogInterface.OnClickListenerlistener)设置取消对话框和设置取消按钮点击的监听器。setNeutralButton(inttextId,DialogInterface.OnClickListenerlistener)设置中立对话框和设置中立按钮点击的监听器。setOnDismissListener(DialogInterface.OnDismissListeneronDismissListener)设置当对话框退出的时候的回调方法。setOnCancelListener(DialogInterface.OnCancelListeneronCancelListener)设置当通过取消按钮让对话框消失的时候的监听器。setOnItemSelectedListener(AdapterView.OnItemSelectedListenerlistener)为对话框的列表添加监听方法。setPositiveButton(inttextId,DialogInterface.OnClickListenerlistener)为对话框添加确定按钮并设置其监听器。setSingleChoiceItems(CharSequence[]items,intcheckedItem,DialogInterface.OnClickListenerlistener)6设置单选对话框setTitle(CharSequencetitle)显示对话框的提示标题setView(Viewview)设置对话框的自定义界面create()创建AlertDialog的实例AlertDialog.Buidler的方法对于创建AlertDialog至关重要,AlertDialog中也有几个继承自Dialog类的方法也经常被使用到。dismiss()退出对话框findViewById(intid)在自定义对话框的界面中根据id查找控件。值得注意的是该方法只有在Dialog调用show()方法后才能使用,否则将不能够找到相应的控件。hide()隐藏对话框show()显示对话框注意:除了上述两个类之外出现的DialogInterface.OnClickListener作为对话框的专用按钮监听器,一定要和View.OnClickListener的使用场合区分开。通过上述的方法介绍,可以看到对话框的自带按钮可以设置一个,两个,三个。这三个按钮的被称为否定按钮、中立按钮和肯定按钮,针对这三个按钮也提供了相应的设置方法。71.1.2进度条对话框当程序在启动上传或者下载文件时,如果文件较大,则需要有进度条来提示用户具体上传的进度,以改善用户体验。AlertDialog有三个子类,分别为ProgressDialog(进度条对话框),DatePickerDialog(日期对话框)和TimePickerDialog(时间对话框);进度条对话框ProgressDialog便是本小节要讲解的主要内容。ProgressDialog除了继承自AlertDialog的方法外,它提供了几个针对于进度条设置的方法:intgetMax()获取进度对话框进度最大值intgetProgress()获取进度对话框当前进度值voidincrementProgressBy(intdiff)设置进度对话框进度增加幅度voidsetMax(intmax)设置进度对话框的最大值voidsetMessage(CharSequencemessage)设置进度对话框的提示内容voidsetProgress(intvalue)设置进度对话框的进度下面给出具体的示例,示例效果如下:8这是一个动态变化的进度条,在示例中使用Handler的延时调用方法来实现进度条进度的更改。示例代码如下:privateintmProgress;HandlermProgressHandler;privatevoidopenProgressDialog(){finalProgressDialogmProgressDialog=newProgressDialog(this);mProgressDialog.setTitle(下载进度);mProgressDialog.setMessage(正在下载中...);mProgressDialog.setProgressStyle(ProgressDialog.STYLE_HORIZONTAL);mProgressDialog.setButton(DialogInterface.BUTTON_POSITIVE,隐藏,newDialogInterface.OnClickListener(){9publicvoidonClick(DialogInterfacedialog,intwhichButton){}});mProgressDialog.setButton(DialogInterface.BUTTON_NEGATIVE,取消,newDialogInterface.OnClickListener(){publicvoidonClick(DialogInterfacedialog,intwhichButton){}});mProgressDialog.setMax(200);mProgressDialog.show();mProgressHandler=newHandler(){@OverridepublicvoidhandleMessage(Messagemsg){super.handleMessage(msg);System.out.println(mProgressDialog.getProgress());if(mProgress=100){mProgressDialog.dismiss();mProgress=0;}else{mProgress++;//mProgressDialog.incrementProgressBy(1);mProgressDialog.setProgress(mProgress);mProgressHandler.sendEmptyMessageDelayed(0,100);}10}};mProgressHandler.sendEmptyMessage(0);}注意:可以和ProgressBar控件对比理解使用。1.1.3日期时间对话框除了进度条对话框外,AlertDialog的另外两个对话框分别为日期和时间选择对话框,它们是DatePoker和TimePicker的对话框的展现形式。日期对话框显示效果如下:11示例代码如下:DatePickerDialogdialog=newDatePickerDialog(this,newDatePickerDialog.OnDateSetListener(){@OverridepublicvoidonDateSet(DatePickerview,intyear,intmonthOfYear,intdayOfMonth){newAlertDialog.Builder(MainActivity.this).setMessage(你选择了+year+年+(monthOfYear+1)+月,+dayOfMonth+日).show();}},1949,9,1);dialog.show();注意:其中的月的设置时从0开始的。本示例设置的日期为1949年10月1日,设置的参数就为1949,9,1。而在显示的时候则需要将获得的月数加1后显示。和日期显示效果类似,时间对话框的显示效果如下:12示例代码如下:TimePickerDialogdialog=newTimePickerDialog(this,newTimePickerDialog.OnTimeSetListener(){@OverridepublicvoidonTimeSet(TimePickerview,i

1 / 39
下载文档,编辑使用

©2015-2020 m.777doc.com 三七文档.

备案号:鲁ICP备2024069028号-1 客服联系 QQ:2149211541

×
保存成功