Dialog对话框的总结

1.普通对话框

//普通对话框
public void dialog1() {
    AlertDialog.Builder builder = new AlertDialog.Builder(this);

    //添加标题
    builder.setTitle("提示");
    //为标题添加图片
    builder.setIcon(R.mipmap.pdx);
    //内容
    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 alertDialog = builder.create();
    //设置对话框点空白区域不消失
    alertDialog.setCanceledOnTouchOutside(false);
    //显示对话框
    alertDialog.show();
}

2.列表对话框

//列表对话框
public void dialog2() {
    AlertDialog.Builder builder = new AlertDialog.Builder(this);
    //添加标题
    builder.setTitle("列表对话框");
    //为标题添加图片
    builder.setIcon(R.mipmap.pdx);
    //列表对话框
    builder.setItems(strings, new DialogInterface.OnClickListener() {
        @Override
        public void onClick(DialogInterface dialog, int which) {
            Toast.makeText(MainActivity.this,  strings[which] + "的下标为" + which, Toast.LENGTH_SHORT).show();
        }
    });
    //创建对话框
    final AlertDialog alertDialog = builder.create();
    //设置对话框点空白区域不消失
    alertDialog.setCanceledOnTouchOutside(false);
    alertDialog.show();
}

3.单选对话框

//单选对话框
public void dialog3() {
    AlertDialog.Builder builder = new AlertDialog.Builder(this);
    //添加标题
    builder.setTitle("单选对话框");
    //为标题添加图片
    builder.setIcon(R.mipmap.pdx);

    //单选对话框  0是默认选中的下标  0就是数据里第一个数据
    builder.setSingleChoiceItems(strings, -1, new DialogInterface.OnClickListener() {
        @Override
        public void onClick(DialogInterface dialog, int which) {
            Toast.makeText(MainActivity.this, "你选中的是" + strings[which] + "下标为" + which, Toast.LENGTH_SHORT).show();
        }
    });
    //创建对话框
    AlertDialog alertDialog = builder.create();
    //展示对话框
    alertDialog.show();
}

4.多选对话框

//多选对话框
public void dialog4() {
    final AlertDialog.Builder builder = new AlertDialog.Builder(this);
    //添加标题
    builder.setTitle("多选对话框");
    //为标题添加图片
    builder.setIcon(R.mipmap.pdx);
    //创建一个布尔型数组
    final boolean[] ids = new boolean[]{false, false, false};
    builder.setMultiChoiceItems(strings, ids, new DialogInterface.OnMultiChoiceClickListener() {
        @Override
        public void onClick(DialogInterface dialog, int which, boolean isChecked) {
            if (isChecked) {
                Toast.makeText(MainActivity.this, "选择了" + strings[which], Toast.LENGTH_SHORT).show();
            }
        }
    });

    //创建对话框
    AlertDialog alertDialog = builder.create();
    //展示对话框
    alertDialog.show();
}

5.进度条对话框

//进度条对话框
public void dialog5() {
    final ProgressDialog progressDialog = new ProgressDialog(this);
    //添加标题
    progressDialog.setTitle("加载中······");
    //在标题前边添加图片
    progressDialog.setIcon(R.mipmap.pdx);
    //设置进度条的类型为水平线
    progressDialog.setProgressStyle(ProgressDialog.STYLE_HORIZONTAL);
    //设置最大进度值
    progressDialog.setMax(100);
    //调用onStart()方法,不然进度条对话框不会生效
    progressDialog.onStart();
    //触碰进度条外的屏幕无效
    progressDialog.setCanceledOnTouchOutside(true);
    //显示进度条对话框
    progressDialog.show();
    //启动线程让进度条动起来
    new Thread(new Runnable() {
        @Override
        public void run() {
            for (int i = 1; i <= 100; i++) {
                try {
                    Thread.sleep(100);
                    progressDialog.setProgress(i);
                    if (progressDialog.getProgress() == 100) {
                        progressDialog.dismiss();
                    }
                } catch (InterruptedException e) {
                    e.printStackTrace();
                }
            }
        }
    }).start();//启动线程
}

6.时间对话框

//时间对话框
public void dialog6() {
    TimePickerDialog timePickerDialog = new TimePickerDialog(this, new TimePickerDialog.OnTimeSetListener() {
        @Override
        public void onTimeSet(TimePicker view, int hourOfDay, int minute) {
            Toast.makeText(MainActivity.this, "时间为" + hourOfDay + ":" + minute, Toast.LENGTH_SHORT).show();
        }
        //时             分            24小时制
    }, 00, 00, true);
    //展示对话框
    timePickerDialog.show();
}

7.日期对话框

//日期对话框
public void dialog7() {
    //获取时间的工具类
    Calendar calendar = Calendar.getInstance();
    //设置日期
    calendar.set(2020, 8 - 1, 15);
    DatePickerDialog datePickerDialog = new DatePickerDialog(this, DialogInterface.BUTTON_NEGATIVE,
            new DatePickerDialog.OnDateSetListener() {
                @Override
                public void onDateSet(DatePicker view, int year, int month, int dayOfMonth) {
                    Toast.makeText(MainActivity.this, year + "年" + (month + 1) + "月" + dayOfMonth + "日", Toast.LENGTH_SHORT).show();
                    MainActivity.this.year = year;
                    MainActivity.this.month = month+1;
                    MainActivity.this.day = dayOfMonth;
                }
                //年             月               日
            }, year, month - 1, day);
    //显示对话框
    datePickerDialog.show();
}

8.自定义对话框

//自定义对话框
public void dialog8() {
    AlertDialog.Builder builder = new AlertDialog.Builder(this);
    //将自己定义的布局解析出来
    View view = LayoutInflater.from(this).inflate(R.layout.item, null);
    //然后赋值给对话框
    builder.setView(view);
    //获取自定义布局里的控件
    TextView btn = view.findViewById(R.id.btn_1);
    final AlertDialog alertDialog = builder.create();
    alertDialog.show();
    //对控件进行监听
    btn.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            Toast.makeText(MainActivity.this, "自定义对话框里的按钮被点击了", Toast.LENGTH_SHORT).show();
            //隐藏对话框
            alertDialog.dismiss();
        }
    });
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值