Android中的对话框
2016-04-17 18:41
369 查看
前言
Android 开发中是百分之一万会用到对话框的,对话框是一种有效的与用户进行信息交互的手段,对话框的种类也很多,这里介绍四种常用的对话框 —— 普通对话框(确定取消对话框)、单选对话框、多选对话框、进度条对话框。其中前三种的创建方式大同小异,用的是同一个类AlertDialog,但是不能直接new,因为这个类的构造方法是Protected,也就是说只有同一个包下或者子类才能去new,但google这样设计是有道理的,因为google为了方便程序猿更有效统一的创建对话框,给我们提供了一套创建对话框的机制;进度条对话框使用的是ProgressDialog类,可以直接去new。
先来看一下界面(不要在意丑的细节)
1.确定取消对话框
//点击按钮创建对话框 public void click(View view) { //创建对话框构建器对象,类似工厂模式 AlertDialog.Builder builder = new AlertDialog.Builder(this); //设置图标(可选) builder.setIcon(android.R.drawable.ic_dialog_alert); //设置标题(可选) builder.setTitle("警告"); 设置内容(可选) builder.setMessage("这是一个警告信息,您确定要退出吗"); //设定确定按钮 builder.setPositiveButton("确定", new DialogInterface.OnClickListener() { @Override public void onClick(DialogInterface dialog, int which) { Toast.makeText(MainActivity.this,"确定按钮点击",Toast.LENGTH_SHORT).show(); } }); //设定取消按钮 builder.setNegativeButton("取消", new DialogInterface.OnClickListener() { @Override public void onClick(DialogInterface dialog, int which) { Toast.makeText(MainActivity.this,"取消按钮点击",Toast.LENGTH_SHORT).show(); } }); //使用构建器创建出对话框对象 AlertDialog dialog = builder.create(); //显示对话框,不执行这句话对话框是不会显示的.... dialog.show(); //可以用下面的方式代替上面的两行 //builder.show(); }
点击确定取消对话框按钮,运行结果:
2.单选对话框
public void singleClick(View v) { AlertDialog.Builder builder = new AlertDialog.Builder(this); builder.setIcon(android.R.drawable.ic_dialog_info); builder.setTitle("请选择您的性别"); //一定不能setMessage,否则该内容会覆盖单选对话框选项 //builder.setMessage("这是一个单选对话框信息"); //要展示的单选选项的字符序列数组 final String[] items = new String[] { "男", "女", "女博士" }; //设置单选选项 //arg1 要展示的选项的文本 //arg2 表示默认已选中的item, -1表示没有默认被选中的选项 builder.setSingleChoiceItems(items, 1, new DialogInterface.OnClickListener() { //arg1: dialog是触发此方法执行的对话框 //arg2: which哪一个item被选中 @Override public void onClick(DialogInterface dialog, int which) { Toast.makeText(MainActivity.this,items[which],Toast.LENGTH_SHORT).show(); //单选结束让对话框消失 dialog.dismiss(); } }); //显示对话框 builder.show(); }
点击单选对话框,运行结果:
注意:
如果设置了builder.setMessage(“这是一个单选对话框信息”);则会覆盖单选选项(多选也是),如图:
3.多选对话框
public void multiClick(View view) { AlertDialog.Builder builder = new AlertDialog.Builder(this); builder.setIcon(android.R.drawable.ic_dialog_info); builder.setTitle("请选择您的爱好"); //要展示的多选选项的字符序列数组 final String[] items = new String[] { "吃", "喝", "玩", "乐" }; //默认已选中的哪些item final boolean[] checkedItems = new boolean[] { true, false, true, false }; //设置多选选项,任何选项被选中都会被执行 builder.setMultiChoiceItems(items, checkedItems, new DialogInterface.OnMultiChoiceClickListener() { @Override public void onClick(DialogInterface dialog, int which, b ad00 oolean isChecked) { //记录用户的选择 checkedItems[which] = isChecked; } }); //多选完成后,点击确定来让对话框消失 builder.setPositiveButton("确定", new DialogInterface.OnClickListener() { @Override public void onClick(DialogInterface dialog, int which) { //拼接选中的选项 String text = ""; for (int i=0; i<checkedItems.length; i++) { text += checkedItems[i]? items[i] + " " : ""; } Toast.makeText(MainActivity.this,text + "被选中", Toast.LENGTH_SHORT).show(); } }); //显示对话框 builder.show(); }
点击多选对话框按钮,运行结果:
4.进度条对话框
public void progressClick(View view) { //创建进度条对话框 final ProgressDialog dialog = new ProgressDialog(this); dialog.setIcon(android.R.drawable.ic_dialog_info); dialog.setTitle("正在加载 请稍后 ..."); //设置为水平进度条,默认是圈圈进度条 dialog.setProgressStyle(ProgressDialog.STYLE_HORIZONTAL); //设置进度最大值 dialog.setMax(100); //模拟加载过程 new Thread(new Runnable() { @Override public void run() { for (int i=0; i<100; i++) { //设置当前进度 dialog.setProgress(i); try { Thread.sleep(50); } catch (InterruptedException e) { e.printStackTrace(); } } //加载完成后,进度条消失 dialog.dismiss(); } }).start(); //显示对话框 dialog.show(); }
点击进度条对话框,运行结果:
补充:
可以使用 setCancelable(false)方法,来设置当点击返回键或者屏幕空白区域的时候,对话框不消失。
相关文章推荐
- 使用C++实现JNI接口需要注意的事项
- Android IPC进程间通讯机制
- Android Manifest 用法
- [转载]Activity中ConfigChanges属性的用法
- Android之获取手机上的图片和视频缩略图thumbnails
- Android之使用Http协议实现文件上传功能
- Android学习笔记(二九):嵌入浏览器
- android string.xml文件中的整型和string型代替
- i-jetty环境搭配与编译
- android之定时器AlarmManager
- android wifi 无线调试
- Android Native 绘图方法
- Android java 与 javascript互访(相互调用)的方法例子
- android 代码实现控件之间的间距
- android FragmentPagerAdapter的“标准”配置
- Android"解决"onTouch和onClick的冲突问题
- android:installLocation简析
- android searchView的关闭事件
- SourceProvider.getJniDirectories