Android 五种常用dialog的使用

常规dialog

一般作为提示使用

xml文件

activity_main.xml

    

MainActivity.Java


    /**
     *常规对话框的点击事件
     * @param view
     */
    public void bt1(View view) {
        new AlertDialog.Builder(this)
                //图标
                .setIcon(R.drawable.ic_launcher_background)
                //标题
                .setTitle("吃饭")
                //不可点击外部区域取消对话框
                .setCancelable(false)
                //内容
                .setMessage("你吃饭了吗")
                //第一个参数选项,第二个参数为该选项的点击事件
                .setPositiveButton("吃了", new DialogInterface.OnClickListener() {
                    @Override
                    public void onClick(DialogInterface dialogInterface, int i) {
                        Toast.makeText(MainActivity.this, "吃这么快", Toast.LENGTH_SHORT).show();
                    }
                })
                //第一个参数选项,第二个参数为该选项的点击事件
                .setNegativeButton("没吃", new DialogInterface.OnClickListener() {
                    @Override
                    public void onClick(DialogInterface dialogInterface, int i) {
                        Toast.makeText(MainActivity.this, "还不吃", Toast.LENGTH_SHORT).show();
                    }
                })
                //展示
                .show();
    }

效果图

Android 五种常用dialog的使用_第1张图片

 

带选项列表的dialog

一个选择类的对话框

xml文件

activity_main.xml

 

MainActivity.Java

这个dialog为单选框,如需多选,setSingleChoiceItems方法替换为setMultiChoiceItems方法

 /**
     *带选项列表对话框的点击事件
     * @param view
     */

    public void bt2(View view) {
        //定义一个字符串数组存放列表信息
        String[]colors={"红","黄","蓝","绿","黑"};
        new AlertDialog.Builder(this)
                //不可点击外部区域取消对话框
                .setCancelable(false)
                //标题
                .setTitle("选择一种颜色")
                .setPositiveButton("ok", null)
                //实现单选列表,第一个参数使用colors数据为选项,第二个参数为默认选中的位置(如不需要默认选中,则设为-1),第三个位置参数为该选项的点击事件
                //如需多选则使用.setMultiChoiceItems()
                .setSingleChoiceItems(colors, 0, new DialogInterface.OnClickListener() {

                    @Override
                    //第一个参数为调用这个对话框的本身,第二个参数为位置
                    public void onClick(DialogInterface dialogInterface, int i) {
                        Toast.makeText(MainActivity.this, colors[i], Toast.LENGTH_SHORT).show();
                    }
                })
                .show();
    }

效果图

Android 五种常用dialog的使用_第2张图片

 

自定义视图dialog

一个自己定义样式的dialog,这里我模拟了一个登录弹窗

需先在layout里创建一个xml文件,这里我命名为dialog_view

dialog_view.xml




    
    
    
    

xml文件

activity_main.xml

  

MainActivity.Java

/**
     * 自定义视图对话框
     * @param view
     */
    public void bt3(View view) {
        //使用inflate方法,从一个XML的资源文件当中获取一个视图
        View v=View.inflate(this,R.layout.dialog_view,null);
        //获取dialog_view中的组件
        final EditText eduser=v.findViewById(R.id.user);
        final EditText edpaw=v.findViewById(R.id.paw);
        new AlertDialog.Builder(this)
                //标题
                .setTitle("用户登录")
                //不可点击外部区域取消对话框
                .setCancelable(false)
                //设置视图
                .setView(v)
                .setPositiveButton("登录", new DialogInterface.OnClickListener() {
                    @Override
                    public void onClick(DialogInterface dialogInterface, int i) {
                        //按钮点击时,获取控件中的数据
                        String username=eduser.getText().toString().trim();
                        String pawd=edpaw.getText().toString().trim();
                        //通过Toast输出
                        Toast.makeText(MainActivity.this, "用户名:"+username+"密码:"+pawd, Toast.LENGTH_SHORT).show();
                    }
                })
                .show();

    }

效果图

Android 五种常用dialog的使用_第3张图片

 

带进度条的dialog

可用于加载等待

xml文件

activity_main.xml

        

MainActivity.Java

 /**
     * 启动带进度条的对话框
     * @param view
     */
    public void bt4(View view) {
        //创建一个进度条对话框
        ProgressDialog progressDialog=new ProgressDialog(this);
        //标题
        progressDialog.setTitle("进度条对话框");
        //设置当前进度
        progressDialog.setProgress(30);
        //设置样式为水平状进度条
        progressDialog.setProgressStyle(ProgressDialog.STYLE_HORIZONTAL);
        //不可点击外部区域取消对话框
        progressDialog.setCancelable(false);
        progressDialog.show();

        new Thread(new Runnable() {
            @Override
            public void run() {
                //for循环使进度条不断累加推进
                for (int i=1;i<20;i++){
                    try {
                        //通过线程休眠是=使两次进度条修改时间之间间隔200毫秒
                        Thread.sleep(200);
                    }catch (InterruptedException e){
                        e.printStackTrace();
                    }
                    //获取当前的进度条加20轮,每轮前进5格
                    progressDialog.setProgress(progressDialog.getProgress()+5);
                }
                //完成后隐藏进度条
                progressDialog.dismiss();
            }
        }).start();

    }

效果图 

Android 五种常用dialog的使用_第4张图片

 

日期选择dialog

用于生日选择,时间选择等

xml文件

activity_main.xml

        

MainActivity.Java

 /**
     * 日期选择对话框
     * @param view
     */
    public void bt5(View view) {
        //Calendar日历类获取年月日的三个字段
        Calendar calendar=Calendar.getInstance();
        int year=calendar.get(Calendar.YEAR);
        int month=calendar.get(Calendar.MONTH);
        int day=calendar.get(Calendar.DAY_OF_MONTH);

        //创建一个日期选择对话框,OnDateSetListener表示在日期选择当中会弹出一个onDateSet返回日期的年月日
        new DatePickerDialog(this, new DatePickerDialog.OnDateSetListener() {
            @Override
            //onDateSet带回选中的年月日
            public void onDateSet(DatePicker datePicker, int year, int month, int dayofminth) {
                Toast.makeText(MainActivity.this, "选中了"+year+"年"+month+"月"+dayofminth+"日", Toast.LENGTH_SHORT).show();

            }
            //设置当前的年月日
        },year,month,day).show();
    }

效果图

Android 五种常用dialog的使用_第5张图片

结束

你可能感兴趣的:(android,安卓,android,studio,java)