欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

android 对话框

程序员文章站 2022-05-16 11:21:38
...

一、常用对话框

普通对话框

android 对话框

//普通对话框
    private void normal_dialog() {
        //1.构建者
        AlertDialog.Builder builder = new AlertDialog.Builder(this);
        //2.设置属性 icon图标 title标题 message内容
        builder.setIcon(R.mipmap.ic_launcher);
        builder.setTitle("这是标题");
        builder.setMessage("这是内容");
        //设置按钮 PositiveButton确定按钮(参数:"显示内容",点击监听)
        builder.setPositiveButton("确定", new DialogInterface.OnClickListener() {
            @Override
            public void onClick(DialogInterface dialogInterface, int i) {
                Toast.makeText(MainActivity.this, "你点击了确定", Toast.LENGTH_SHORT).show();
            }
        });
        //设置按钮 NegativeButton取消按钮(参数:"显示内容",点击监听)
        builder.setNegativeButton("取消", new DialogInterface.OnClickListener() {
            @Override
            public void onClick(DialogInterface dialogInterface, int i) {
                Toast.makeText(MainActivity.this, "你点击了取消", Toast.LENGTH_SHORT).show();
            }
        });
        //3.使用建造者创建对话框
        AlertDialog dialog = builder.create();
        //4.显示
        dialog.show();
    }

单选对话框

android 对话框

单选对话框 SingleChoiceItems

 //单选对话框
    private void single_dialog() {
        //1.构建者
        AlertDialog.Builder builder = new AlertDialog.Builder(this);
        //2.设置属性 icon图标 title标题 message内容
        builder.setIcon(R.mipmap.ic_launcher);
        builder.setTitle("这是标题");
        //设置按钮 PositiveButton确定按钮(参数:"显示内容",点击监听)
        builder.setPositiveButton("确定", new DialogInterface.OnClickListener() {
            @Override
            public void onClick(DialogInterface dialogInterface, int i) {
                Toast.makeText(MainActivity.this, "你点击了确定", Toast.LENGTH_SHORT).show();
            }
        });
        //设置按钮 NegativeButton取消按钮(参数:"显示内容",点击监听)
        builder.setNegativeButton("取消", new DialogInterface.OnClickListener() {
            @Override
            public void onClick(DialogInterface dialogInterface, int i) {
                Toast.makeText(MainActivity.this, "你点击了取消", Toast.LENGTH_SHORT).show();
            }
        });
        //3设置单选列表 SingleChoiceItems单选 (参数:数据源,默认选中下标,点击监听)
        final String[] datas = {"男", "女", "不详"};
        builder.setSingleChoiceItems(datas, 2, new DialogInterface.OnClickListener() {
            @Override
            public void onClick(DialogInterface dialogInterface, int i) {
                Toast.makeText(MainActivity.this, "你选中的是:" + datas[i], Toast.LENGTH_SHORT).show();
            }
        });
        //4.使用建造者创建对话框
        AlertDialog dialog = builder.create();
        //5.显示
        dialog.show();
    }

多选对话框

多选对话框 NegativeButton 与单选区别就是一个词语

//多选对话框
    private void mulite_dialog() {
        //1.构建者
        AlertDialog.Builder builder = new AlertDialog.Builder(this);
        //2.设置属性 icon图标 title标题 message内容
        builder.setIcon(R.mipmap.ic_launcher);
        builder.setTitle("这是标题");
        //设置按钮 PositiveButton确定按钮(参数:"显示内容",点击监听)
        builder.setPositiveButton("确定", new DialogInterface.OnClickListener() {
            @Override
            public void onClick(DialogInterface dialogInterface, int i) {
                Toast.makeText(MainActivity.this, "你点击了确定", Toast.LENGTH_SHORT).show();
            }
        });
        //设置按钮 NegativeButton取消按钮(参数:"显示内容",点击监听)
        builder.setNegativeButton("取消", new DialogInterface.OnClickListener() {
            @Override
            public void onClick(DialogInterface dialogInterface, int i) {
                Toast.makeText(MainActivity.this, "你点击了取消", Toast.LENGTH_SHORT).show();
            }
        }); 
        //3.设置多选列表 SingleChoiceItems单选 (参数:数据源,默认选中状态,点击监听)
        final String[] datas = {"吃饭", "睡觉", "打豆豆"};
        final boolean[] flags = {false, true, true};
        builder.setMultiChoiceItems(datas, flags, new DialogInterface.OnMultiChoiceClickListener() {
            @Override
            public void onClick(DialogInterface dialogInterface, int i, boolean b) {
                Toast.makeText(MainActivity.this, "你选中的是:" + datas[i], Toast.LENGTH_SHORT).show();
            }
        });
        //4.使用建造者创建对话框
        AlertDialog dialog = builder.create();
        //5.显示
        dialog.show();
    }

自定义内容对话框

android 对话框

仅改变内容 内容布局可随意更改

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical">
    <TextView
        android:id="@+id/tv"
        android:text="自定义内容(图片素材)"
        android:gravity="center_horizontal"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"/>
    <ImageView
        android:id="@+id/iv"
        android:src="@mipmap/img"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"/>
</LinearLayout>
//自定义内容对话框
    private void custom_dialog() {
        //1.获取布局视图
        View inflate = LayoutInflater.from(this).inflate(R.layout.custom_layout, null);
        //2.构建者
        AlertDialog.Builder builder = new AlertDialog.Builder(this);
        //属性
        builder.setIcon(R.mipmap.ic_launcher);
        builder.setTitle("这是标题");
        //设置按钮 PositiveButton确定按钮(参数:"显示内容",点击监听)
        builder.setPositiveButton("确定", new DialogInterface.OnClickListener() {
            @Override
            public void onClick(DialogInterface dialogInterface, int i) {
                Toast.makeText(MainActivity.this, "你点击了确定", Toast.LENGTH_SHORT).show();
            }
        });
        //设置按钮 NegativeButton取消按钮(参数:"显示内容",点击监听)
        builder.setNegativeButton("取消", new DialogInterface.OnClickListener() {
            @Override
            public void onClick(DialogInterface dialogInterface, int i) {
                Toast.makeText(MainActivity.this, "你点击了取消", Toast.LENGTH_SHORT).show();
            }
        });
        //3.设置自定义布局
        builder.setView(inflate);
        //4.使用建造者创建对话框
        AlertDialog dialog = builder.create();
        //5.显示
        dialog.show();
    }

水平进度条对话框

实例进度条对象 用style变换样式 系统自带的样式 STYLE_HORIZONTAL

//水平进度条对话框
    private void hor_progress_dialog() {
        //1.实例化对象 进度条对话框 ProgressDialog
        final ProgressDialog dialog = new ProgressDialog(this);
        //2.设置属性 ProgressStyle进度条样式 Max进度条最大值 Message提示语
        dialog.setProgressStyle(ProgressDialog.STYLE_HORIZONTAL);
        dialog.setMax(100);
        dialog.setMessage("正在下载");
        //3.显示
        dialog.show();
        //4.定时器 模拟下载过程使进度条动
        final Timer timer = new Timer();
        timer.schedule(new TimerTask() {
            //进度条状态初始为0
            int progreess = 0;

            @Override
            public void run() {
                //进度条状态超出最大值执行 停止计时器 消失对话框
                if (progreess >= 100) {
                    //对话框撤销
                    dialog.dismiss();
                    //计时器取消
                    timer.cancel();
                }
                //每次进度为20 共100
                dialog.setProgress(progreess += 20);
            }
            //0秒够执行,每隔1000毫秒执行一次,也就是每秒执行一次
        }, 0, 1000);
    }

圆形进度条对话框

android 对话框

实例进度条对象 用style变换样式 系统自带的样式 STYLE_SPINNER

//圆形进度条对话框
    private void spi_progress_dialog() {
        //1.实例化对象 进度条对话框 ProgressDialog
        final ProgressDialog dialog = new ProgressDialog(this);
        //2.设置属性 ProgressStyle进度条样式 Max进度条最大值 Message提示语
        dialog.setProgressStyle(ProgressDialog.STYLE_SPINNER);//圆形
        dialog.setMax(100);
        dialog.setMessage("正在下载");
        //3.显示
        dialog.show();
        //4.定时器 模拟下载过程使进度条动
        final Timer timer = new Timer();
        timer.schedule(new TimerTask() {
            //进度条状态初始为0
            int progreess = 0;

            @Override
            public void run() {
                //进度条状态超出最大值执行 停止计时器 消失对话框
                if (progreess >= 100) {
                    //对话框撤销
                    dialog.dismiss();
                    //计时器取消
                    timer.cancel();
                }
                //每次进度为20 共100
                dialog.setProgress(progreess += 20);
            }
            //0秒够执行,每隔1000毫秒执行一次,也就是每秒执行一次
        }, 0, 1000);
    }

日期选择对话框

android 对话框

系统自带的日期对话框 默认样式由版本决定

//日期对话框
    private void data_dialog() {
        //1.实例化日历对象 获取系统日期
        Calendar calendar = Calendar.getInstance();
        //2. DatePickerDialog日期选择对话框
        DatePickerDialog dialog = new DatePickerDialog(this, new DatePickerDialog.OnDateSetListener() {
            @Override
            public void onDateSet(DatePicker datePicker, int year, int month, int dayOfMonth) {
                Toast.makeText(MainActivity.this, year + "-" + (month + 1) + "-" + dayOfMonth, Toast.LENGTH_SHORT).show();
            }
            //YEAR 年 MONTH月 DAY_OF_MONTH日
        }, calendar.get(Calendar.YEAR), calendar.get(Calendar.MONTH), calendar.get(Calendar.DAY_OF_MONTH));
        //3.显示
        dialog.show();
    }

时间选择对话框

android 对话框

系统自带的日期对话框 默认样式由版本决定

//时间选择对话框
    private void time_dialog() {
        //1.实例化日历对象 获取系统时间
        Calendar calendar = Calendar.getInstance();
        //2.TimePickerDialog时间选择对话框
        TimePickerDialog dialog = new TimePickerDialog(this, new TimePickerDialog.OnTimeSetListener() {
            @Override
            public void onTimeSet(TimePicker timePicker, int hourOfDay, int minute) {
                Toast.makeText(MainActivity.this, hourOfDay + ":" + minute, Toast.LENGTH_SHORT).show();
            }
            //HOUR小时 MINUTE分钟 是否24小时制
        }, calendar.get(Calendar.HOUR), calendar.get(Calendar.MINUTE), true);
        //3.显示
        dialog.show();
    }

二、自定义对话框(重难点)