Android学习笔记二十八之AlertDialog提示对话框和几个常用的提示框

来源:互联网 发布:绝对中立知乎 编辑:程序博客网 时间:2024/06/01 15:32

Android学习笔记二十八之AlertDialog提示对话框和ProgressDialog进度条提示框

  在我们实际开发中,常常需要有对话框弹出跟用户交互。AndroidOS提供有多种对话框,这一节,我们介绍一下AlertDialog和几个常用Dialog,AlertDialog是ProgressDialog的父类,构造器是protected的,所以不能直接new出来这个对象,需要用到AlertDialog.Builder中的create()方法。下面介绍一下创建AlertDialog需要了解的几个方法:

  • setTitle:为对话框设置标题
  • setIcon :为对话框设置图标
  • setMessage:为对话框设置内容
  • setView : 给对话框设置自定义样式
  • setItems :设置对话框要显示的一个list,一般用于显示几个命令时
  • setMultiChoiceItems :用来设置对话框显示一系列的复选框
  • setSingleChoiceItems:用来设置对话框的单选列表
  • setNeutralButton :普通按钮
  • setPositiveButton :给对话框添加”Yes”按钮
  • setNegativeButton :对话框添加”No”按钮
  • create : 创建对话框,必须要调用
  • show :显示对话框,必须要调用

下面我们通过例子体会AlertDialog的几种常用情况:

第一种、普通的对话框

创建一个普通的对话框,比如给用户选择是否退出程序等的时候,例子代码如下:

AlertDialog.Builder builder = new AlertDialog.Builder(AlertDialogActivity.this);            builder.setTitle("提示");            builder.setMessage("你是否要退出应用?");            builder.setNegativeButton("取消", new DialogInterface.OnClickListener() {                @Override                public void onClick(DialogInterface dialogInterface, int i) {                    ToastUtils.showToast(AlertDialogActivity.this, "你点击了取消按钮");                }            });            builder.setPositiveButton("确定", new DialogInterface.OnClickListener() {                @Override                public void onClick(DialogInterface dialogInterface, int i) {                    ToastUtils.showToast(AlertDialogActivity.this, "你点击了确定按钮");                }            });            builder.create().show();

第二种、带列表的普通对话框

例子代码如下:

        final String[] cars = {"宝马", "奔驰", "马自达", "卡罗拉", "本田", "丰田", "长安", "红旗"};            final AlertDialog.Builder builder = new AlertDialog.Builder(AlertDialogActivity.this);            builder.setTitle("选择你喜欢的车");            builder.setItems(cars, new DialogInterface.OnClickListener() {                @Override                public void onClick(DialogInterface dialogInterface, int i) {                    ToastUtils.showToast(AlertDialogActivity.this, "你选了:" + cars[i]);                }            });            builder.create().show();

第三种、带单选列表的对话框

例子代码如下:

            final String[] language = {"Java语言", "PHP语言", "Android语言", "IOS语言", "C++语言", "C#语言"};            final String[] select = {""};            AlertDialog.Builder builder = new AlertDialog.Builder(AlertDialogActivity.this);            builder.setTitle("选择你喜欢的语言,只能选一项");            builder.setSingleChoiceItems(language, 0, new DialogInterface.OnClickListener() {                @Override                public void onClick(DialogInterface dialogInterface, int i) {                    select[0] = language[i];                }            });            builder.setPositiveButton("确定", new DialogInterface.OnClickListener() {                @Override                public void onClick(DialogInterface dialogInterface, int i) {                    ToastUtils.showToast(AlertDialogActivity.this, "你选了:" + select[0]);                }            });            builder.create().show();

第四种、带多选列表的对话框

例子代码如下:

            final String[] menu = {"丝瓜面筋", "糖醋鲤鱼", "糖醋排骨", "剁椒鱼头", "清蒸咸鱼", "鱼香肉丝", "清炒上海青", "麻婆豆腐"};            final boolean[] isCheck = {false, false, false, false, false, false, false, false};            AlertDialog.Builder builder = new AlertDialog.Builder(AlertDialogActivity.this);            builder.setTitle("请选择你的想要的菜");            builder.setMultiChoiceItems(menu, isCheck, new DialogInterface.OnMultiChoiceClickListener() {                @Override                public void onClick(DialogInterface dialogInterface, int i, boolean b) {                    isCheck[i] = b;                }            });            builder.setPositiveButton("确定", new DialogInterface.OnClickListener() {                @Override                public void onClick(DialogInterface dialogInterface, int i) {                    String select = "";                    for (int j = 0; j < isCheck.length; j++) {                        if (isCheck[j]) {                            select += menu[j];                        }                    }                    ToastUtils.showToast(AlertDialogActivity.this, "你选择的菜有:" + select);                }            });            builder.create();            builder.show();

最后实现效果如下:

这里只是简单的实现,先是new一个AlertDialog.Builder,然后设置一些相应的内容,最后调用create方法创建,调用show方法显示出来。对于AlertDialog的介绍就到这里了,也可以自定义AlertDialog,这个留到后面讲自定义控件的时候再细讲。下面我们介绍一下ProgressDialog。

ProgressDialog进度提示框

  AndroidOS提供给我们创建进度条对话框有两种方式,一种是直接new,另外一种是调用静态方法show。下面,我们通过例子体会一下ProgressDialog。

创建一个圆形进度条

//通过show方法创建一个进度条对话框 ProgressDialog.show(ProgressDialogActivity.this, "通讯中", "正在通讯,请稍候...", false, true);

创建一个长方形进度条

            //通过new方法创建一个对话框            progressDialog = new ProgressDialog(ProgressDialogActivity.this);            //设置进度条的最大值            progressDialog.setMax(maxProgress);            //设置标题            progressDialog.setTitle("正在下载");            //设置提示信息内容            progressDialog.setMessage("安装包正在下载,马上就好...");            //设置是否允许点击进度条对话框外面取消对话框            progressDialog.setCancelable(false);            //设置进度条的样式,这个为长方形            progressDialog.setProgressStyle(ProgressDialog.STYLE_HORIZONTAL);            //设置是否显示进度,false显示            progressDialog.setIndeterminate(false);            //将进度条对话框show出来            progressDialog.show();            //新建一个线程更新进度            new Thread(new Runnable() {                @Override                public void run() {                    while (progress < maxProgress) {                        //模拟耗时方法                        sleep();                        progress += 2;                        handler.sendEmptyMessage(111);                    }                }            }).start();

效果图:

这样可以实现一个ProgressDialog进度条对话框,在这里知识简单实现,我们也可以按照需求自定义进度条对话框。

DatePickerDialog日期选择提示框

  这个和TimePickerDiaog都比较简单,直接放代码示例,就不在解析了,代码如下:

            Calendar calendar = Calendar.getInstance();            //第一个参数是上下文对象,第二个是监听器,第三个是设置当前年份,第四个是设置月份,第五个是设置当前日份            new DatePickerDialog(MainActivity.this, new DatePickerDialog.OnDateSetListener() {                @Override                public void onDateSet(DatePicker datePicker, int i, int i1, int i2) {                    String result = "你选择的是:" + i + "年" + (i1 + 1) + "月" + i2 + "日";                    ToastUtils.showToast(MainActivity.this, result);                }            }, calendar.get(Calendar.YEAR), calendar.get(Calendar.MONTH), calendar.get(Calendar.DAY_OF_MONTH)).show();

TimePickerDialog时间选择提示框

        Calendar calendar = Calendar.getInstance();            //第一个参数是上下文对象,第二个是监听器,第三个是设置当前小时数,第四个是分钟数,第五个是是否显示24小时制            new TimePickerDialog(MainActivity.this, new TimePickerDialog.OnTimeSetListener() {                @Override                public void onTimeSet(TimePicker timePicker, int i, int i1) {                    String result = "你选择的是:" + i + "时" + i1 + "分";                    ToastUtils.showToast(MainActivity.this, result);                }            }, calendar.get(Calendar.HOUR_OF_DAY), calendar.get(Calendar.MINUTE), true).show();

最后实现效果图:

最后附上国内镜像API

AlertDialog对话框

ProgressDialog进度条对话框

DatePickerDialog日期选择提示框

TimePickerDialog时间选择提示框

猛戳下载Demo源码

0 0
原创粉丝点击