常用Dialog对话框

写在前面

下划线命名的好处:输入任意单词都可以有该方法的代码提示
注意:如果只设置了Icon而没有设置Title,图标将不会显示
注意:如果设置了Message属性,就会优先显示Message,关于属性的设置只会有一个生效,Message优先级总是最高

1.普通(消息)对话框

private void normal_dialog(){

    //创建构建者
    AlertDialog.Builder builder = new AlertDialog.Builder(this);
        //类有两个,貌似没有什么区别
        //android.support.v7.AlertDialog.app
        //android.support.app

    //设置内容
    builder.setIcon(R.drawable.guy);
    builder.setTitle("我是标题");
    builder.setMessage("请看这是一串内容");
        // 注意:如果只设置了Icon而没有设置Title,图标将不会显示

    //设置确定按钮
    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 dialog = builder.create();

    //显示该对话框
    dialog.show();
}

2.单选对话框

private void single_dialog(){

    //创建构建者
    AlertDialog.Builder builder = new AlertDialog.Builder(this);

    //设置内容
    builder.setIcon(R.drawable.guy);
    builder.setTitle("我是标题");
    //builder.setMessage("请看这是一串内容");
    // 注意:如果设置了Message属性,就会优先显示Message而不会显示SingleChoiceItems单选列表,Message优先级总是最高

    //设置确定按钮
    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[] msgs = {"单选1","单选2","单选3","单选4"};

    builder.setSingleChoiceItems(msgs, 1, new DialogInterface.OnClickListener() {
        @Override
        public void onClick(DialogInterface dialog, int which) {
            Toast.makeText(MainActivity.this, ""+msgs[which], Toast.LENGTH_SHORT).show();
        }
    });

    //使用构建者创建对话框
    AlertDialog dialog = builder.create();

    //显示该对话框
    dialog.show();
}

3.多选对话框

private void mulite_dialog(){
    //创建构建者
    AlertDialog.Builder builder = new AlertDialog.Builder(this);

    //设置内容
    builder.setIcon(R.drawable.guy);
    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();
        }
    });

    String[] msgs = {"多选1","多选2","多选3","多选4"};
    final boolean[] flags = {true,true,true,false};

    builder.setMultiChoiceItems(msgs, flags, new DialogInterface.OnMultiChoiceClickListener() {
        @Override
        public void onClick(DialogInterface dialog, int which, boolean isChecked) {
            flags[which] = isChecked;//同步数据源
        }
    });

    //使用构建者创建对话框
    AlertDialog dialog = builder.create();

    //显示该对话框
    dialog.show();
}

4.自定义对话框

自定义布局:customer_dialog.xml

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:orientation="vertical"
    android:gravity="center_horizontal"
    android:layout_height="match_parent">

    <TextView
        android:textSize="50sp"
        android:text="一行字"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content" />
    <ImageView
        android:src="@drawable/guy"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content" />

</LinearLayout>
private void customer_dialog(View view){

    //创建构建者
    AlertDialog.Builder builder = new AlertDialog.Builder(this);

    //填充自定义布局
    builder.setView(view);

    //使用构建者创建对话框
    AlertDialog dialog = builder.create();

    //显示该对话框
    dialog.show();
}

构建参数,调用方法

View view = LayoutInflater.from(MainActivity.this).inflate(R.layout.customer_dialog,null);
customer_dialog(view);

5.精确进度条对话框

private void hor_progress_dialog(){
    final ProgressDialog dialog = new ProgressDialog(this);

    //设置内容
    dialog.setProgressStyle(ProgressDialog.STYLE_HORIZONTAL);//设置水平中央
    dialog.setMax(100);
    dialog.setMessage("正在下载...");

    dialog.show();

    final Timer timer = new Timer();
    timer.schedule(new TimerTask() {
        @Override
        public void run() {
            dialog.setProgress(dialog.getProgress()+10);
            if (dialog.getProgress() >= dialog.getMax()){
                dialog.dismiss();//隐藏对话框
                timer.cancel();//停止计时器
            }
        }
    },1000,1000);//第二参数:首次延时1000毫秒,第三参数:每次间隔1000毫秒

}

6.模糊进度条对话框

private void spi_progress_dialog(){
    ProgressDialog dialog = new ProgressDialog(this);

    //设置内容
    dialog.setProgressStyle(ProgressDialog.STYLE_SPINNER);//设置水平中央
    dialog.setMessage("正在下载...");

    dialog.show();
}

7.日期选择对话框

private void date_dialog(){
    Calendar calendar = Calendar.getInstance();
    //参数:上下文,监听器,默认年,默认月,默认日
    new DatePickerDialog(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.MONTH),calendar.get(Calendar.DAY_OF_MONTH)).show();
}

8.时间选择对话框

private void time_dialog(){
    Calendar calendar = Calendar.getInstance();
    //参数:上下文,监听器,默认时,默认分,是否24时制
    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();
        }
    },calendar.get(Calendar.HOUR),calendar.get(Calendar.MINUTE),true).show();
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值