八种Dialog和selector选择器

对话框的八种形式*

1、普通对话框
2、自定义对话框
3、单选对话框
4、多选对话框
5、水平进度条对话框
6、模糊进度条对话框
7、日期对话框
8、时间对话框

区别:
模糊进度条对话框只是在样式上和水平进度条对话框属性不同,
模糊是ProgressDialog.STYLE_SPINNER、
水平是ProgressDialog.STYLE_HORIZONTAL。

对话框类型实现类特殊方法
普通AlertDialog.Builder()
单选AlertDialog.Builder()setSingleChoiceItems()
多选AlertDialog.Builder()setMultiChoiceItems()
日期DatePickerDialogDatePickerDialog(context,DatePickerDialog.OnDateSetListener,year,month,day);
时间TimePickerDialogTimePickerDialog(context, TimePickerDialog.OnTimeSetListener,时,分,是否24进制);
水平TimePickerDialogsetMultiChoiceItems()

八种对话框的详细用法

1、普通对话框

//普通对话框
private void normal_dialog() {
    AlertDialog.Builder builder = new AlertDialog.Builder(MainActivity.this);
    builder.setIcon(R.mipmap.ic_launcher_round);//设置图标
    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();
        }
    });
    //创建并展示
    builder.create().show();

}

2、自定义对话框


//自定义对话框
AlertDialog alertDialog;
private void zidingyi_dialog() {  
    //inflate是自己自定义的一个布局
    View inflate = View.inflate(MainActivity.this, R.layout.layout_zi, null);
    Button but_colse = inflate.findViewById(R.id.but_colse);
    but_colse.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            alertDialog.dismiss();
        }
    });
    AlertDialog.Builder builder = new AlertDialog.Builder(MainActivity.this);
    builder.setView(inflate);
    //创建并展示
    alertDialog = builder.create();
    alertDialog.show();
}

3、单选对话框

//单选按钮对话框
private void radio_dialog() {
    AlertDialog.Builder builder = new AlertDialog.Builder(MainActivity.this);
    builder.setIcon(R.mipmap.ic_launcher_round);//设置图标
    builder.setTitle("请选择日期");//设置标题
    //设置确定取消按钮
    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();
        }
    });
    //创建单选对话框里的数据源
    final String[] days = new String[]{"星期一","星期二","星期三","星期四","星期五","星期六","星期日"};
    builder.setSingleChoiceItems(days, 1, new DialogInterface.OnClickListener() {
        @Override
        public void onClick(DialogInterface dialog, int which) {
            Toast.makeText(MainActivity.this, "您选择了:"+days[which], Toast.LENGTH_SHORT).show();
        }
    });
    //创建并展示
    builder.create().show();
}

4、多选对话框

//多选按钮对话框
private void check_dialog() {
    final String[] string = new String[]{"张","刘","李","王"};
    final boolean[] booleans = new boolean[]{true,false,true,false};
    AlertDialog.Builder builder = new AlertDialog.Builder(MainActivity.this);
    builder.setTitle("请挑选您的姓氏!");
    builder.setPositiveButton("确定", new DialogInterface.OnClickListener() {
        @Override
        public void onClick(DialogInterface dialog, int which) {
            for(int i=0;i<booleans.length;i++){
                if(booleans[i]){
                    Toast.makeText(MainActivity.this,"您选择的是:"+string[i],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();
        }
    });
    builder.setMultiChoiceItems(string, booleans, new DialogInterface.OnMultiChoiceClickListener() {
        @Override
        public void onClick(DialogInterface dialog, int which, boolean isChecked) {
            booleans[which] = isChecked;
        }
    });
    builder.create().show();

}

5、水平进度条对话框

//进度条对话框
private void pro_dialog() {
    final ProgressDialog progressDialog = new ProgressDialog(MainActivity.this);
    progressDialog.setProgressStyle(ProgressDialog.STYLE_HORIZONTAL);//设置水平进度条
    progressDialog.setMax(100);
    progressDialog.setMessage("正在下载");
    progressDialog.show();

    final Timer timer = new Timer();
    timer.schedule(new TimerTask() {
        int pro = 0;
        @Override
        public void run() {
            if(pro==100){
                progressDialog.dismiss();
                timer.cancel();
            }
            progressDialog.setProgress(pro+=10);
        }
    },0,1000);


}

6、模糊进度条对话框

//模糊水平进度条对话框
private void pro_mo_dialog() {
    final ProgressDialog progressDialog = new ProgressDialog(MainActivity.this);
    progressDialog.setProgressStyle(ProgressDialog.STYLE_SPINNER);//设置水平进度条
    progressDialog.setMax(100);
    progressDialog.setMessage("正在下载");
    progressDialog.show();

    final Timer timer = new Timer();
    timer.schedule(new TimerTask() {
        int pro = 0;
        @Override
        public void run() {
            if(pro==100){
                progressDialog.dismiss();
                timer.cancel();
            }
            progressDialog.setProgress(pro+=10);
        }
    },0,1000);


}

7、日期对话框

//日期对话框
private void date_dialog() {
    Calendar calendar = Calendar.getInstance();//获取日历对象
    DatePickerDialog datePickerDialog = new DatePickerDialog(MainActivity.this, 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();
        }
    }, calendar.get(Calendar.YEAR), calendar.get(Calendar.MONDAY), calendar.get(Calendar.DAY_OF_MONTH));

    datePickerDialog.show();

}

8、时间对话框

在这里插入代码片//时间对话框
private void time_dialog() {
    Calendar calendar = Calendar.getInstance();
    TimePickerDialog timePickerDialog = new TimePickerDialog(MainActivity.this, new TimePickerDialog.OnTimeSetListener() {
        @Override
        public void onTimeSet(TimePicker view, int hourOfDay, int minute) {
            Toast.makeText(MainActivity.this, "您选择的时间是:" + hourOfDay + "小时" + minute + "分", Toast.LENGTH_SHORT).show();
        }
    }, calendar.get(Calendar.HOUR), calendar.get(Calendar.MINUTE), true);
    timePickerDialog.show();
}

selector选择器

*1、效果

选择器的效果

* 2、创建selector选择器

1.首先创建一个选择器:名字自定义:selector1.xml

创建一个xml文件
在这里插入图片描述

在drawable下面创建一个XML文件
1、文字改变效果的XML
注意:颜色没有提示键,需要自己手打
文字改变效果的XML2、图片改变效果的XML
图片改变效果的XML

* 使用自带的照片

注意:如果不想使用自带的照片的话,就把自己的照片放到drawable里面,不然无法找到该照片
使用自带的照片

在这里插入图片描述

最后在drawable下面生成2个文件夹:chat1和chat2
在这里插入图片描述

所有步骤结束,最后在布局里直接使用
在这里插入图片描述

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值