Dialog常用对话框

当我们点击某些事物或触发一些提示的时候,这时候对话框对话框就非常好用
生活中常用的有8种对话框如下

一.普通对话框

1.首先在布局文件创建一个属性如下

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    tools:context=".MainActivity"
    android:orientation="vertical"
    >
   
     <Button
        android:id="@+id/bu_common_dialog_box"
        android:layout_width="match_parent"
        android:layout_height="0dp"
        android:layout_weight="1"
        android:text="普通对话框"
        android:textSize="25dp"
        android:onClick="onClick"
        />
</LinearLayout>

2.初始化控
3.设置监听 (设置相对应的点击事件)
4.完成对话框
5.展示对话框

 @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        //初始化控件
        buCommonDialogBox = (Button) findViewById(R.id.bu_common_dialog_box);
    }
    
	//触发点击事件
    public void onClick(View view) {
        //判断点击的事件
        switch (view.getId()) {
            	//普通对话框
            	case R.id.bu_common_dialog_box:
                //普通对话框方法
                CommonMethod();
                break; 
                }
   		 }

	 //普通对话框方法
    private void CommonMethod() {
     
        //创建对话框构造者
        AlertDialog.Builder builder = new AlertDialog.Builder(this);
        //设置属性
        builder.setIcon(R.mipmap.ic_launcher_round).setTitle("标题区域").setMessage("内容区域");

        //确认取消监听
        builder.setPositiveButton("确认", new DialogInterface.OnClickListener() {
            @Override
            public void onClick(DialogInterface dialogInterface, int i) {
                Toast.makeText(MainActivity.this, "确认", Toast.LENGTH_SHORT).show();
            }
        });

        builder.setNegativeButton("取消", new DialogInterface.OnClickListener() {
            @Override
            public void onClick(DialogInterface dialogInterface, int i) {
                Toast.makeText(MainActivity.this, "取消", Toast.LENGTH_SHORT).show();
            }
        });

        //创建构造者对象
        AlertDialog dialog = builder.create();
        //弹框外是否可取消弹框
        dialog.setCanceledOnTouchOutside(false);
        //展示到页面
        dialog.show();
    }

点击效果如下
在这里插入图片描述

二.单选对话框

1…首先在布局文件创建一个属性如下


<Button
        android:id="@+id/bu_radio_dialog_box"
        android:layout_width="match_parent"
        android:layout_height="0dp"
        android:layout_weight="1"
        android:background="#fff"
        android:layout_marginLeft="30dp"
        android:layout_marginTop="30dp"
        android:layout_marginRight="30dp"
        android:text="单选对话框"
        android:textSize="25dp"
        android:onClick="onClick"

        />

2.初始化控件
3.设置属性和普通一样
这里只是把内容用一个字符数组包裹起来
给对话框设置单选构造者即(setSingleChoiceItems)
并设置监听
第一个参数是数据源
第二个参数是默认选择弹框第几个
第三个参数是监听事件

4.获取构造者并展示.(一定不要忘了展示)


 @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        //初始化控件
        buRadioDialogBox= (Button) findViewById(R.id.bu_radio_dialog_box);
    }
    
	//触发点击事件
    public void onClick(View view) {
        //判断点击的事件
        switch (view.getId()) {
            	//单选对话框
            	case R.id.bu_radio_dialog_box:
                //单选对话框方法
                RadioMethod();
                break; 
                }
   		 }

	private void RadioMethod() {
		//创建构造者
        AlertDialog.Builder builder = new AlertDialog.Builder(this);
        //设置属性
        builder.setIcon(R.mipmap.ic_launcher_round).setTitle("请选择一名队友");//.setMessage("内容区域");将内容改成单选事件
        //数据
        final String[] s = {"小爱同学", "小胖同学", "小花同学"};
        //设置单选对话框
        builder.setSingleChoiceItems(s, 1, new DialogInterface.OnClickListener() {
            @Override
            public void onClick(DialogInterface dialogInterface, int i) {
                Toast.makeText(MainActivity.this, "" + s[i], Toast.LENGTH_SHORT).show();
            }
        });
        //确认取消监听
        builder.setPositiveButton("确认", new DialogInterface.OnClickListener() {
            @Override
            public void onClick(DialogInterface dialogInterface, int i) {
                Toast.makeText(MainActivity.this, "确认", Toast.LENGTH_SHORT).show();
            }
        });
        builder.setNegativeButton("取消", new DialogInterface.OnClickListener() {
            @Override
            public void onClick(DialogInterface dialogInterface, int i) {
                Toast.makeText(MainActivity.this, "取消", Toast.LENGTH_SHORT).show();
            }
        });
        //创建构造者对象
        AlertDialog dialog = builder.create();
        //展示到页面
        dialog.show();
    }

效果如下
在这里插入图片描述

三.多选对话框

1…首先在布局文件创建一个属性如下


<Button
        android:id="@+id/bu_much_dialog_box"
        android:textSize="25dp"
        android:layout_width="match_parent"
        android:layout_height="0dp"
        android:layout_weight="1"
        android:background="#fff"
        android:layout_marginLeft="30dp"
        android:layout_marginTop="30dp"
        android:layout_marginRight="30dp"
        android:text="多选对话框"
        android:onClick="onClick"
        />
        

2.初始化控件
3.设置属性和普通一样
这里只是把内容用一个字符数组包裹起来
并设置一个boolean类型的数组与上面的字符串一一对应true默认选中 false不选中

给对话框设置多选构造者即(setMultiChoiceItems)
并设置监听
第一个参数是数据源
第二个参数是默认选中状态
第三个参数是监听事件

4.获取构造者并展示.(一定不要忘了展示)


 @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        //初始化控件
        buMuchDialogBox= (Button) findViewById(R.id.bu_much_dialog_box);
    }
    
	//触发点击事件
    public void onClick(View view) {
        //判断点击的事件
        switch (view.getId()) {
            	//多选对话框
            	case R.id.bu_much_dialog_box:
                //多选对话框方法
               	MuchMethod();
                break; 
                }
   		 }

	//多选对话框方法
    private void MuchMethod() {
		//创建构造者
        AlertDialog.Builder builder = new AlertDialog.Builder(this);
        //设置属性
        builder.setIcon(R.mipmap.ic_launcher_round).setTitle("请选择你的爱好");//.setMessage("内容区域");将内容转变成为多选对话框
        //数据
        final String[] s = {"足球", "篮球", "羽毛球", "跑步"};
        //默认选择状态
        final boolean[] bool = {true, false, false, false};

        //设置多选对话框
        builder.setMultiChoiceItems(s, bool, new DialogInterface.OnMultiChoiceClickListener() {
            @Override
            public void onClick(DialogInterface dialogInterface, int i, boolean b) {
                //改变选中状态
                bool[i] = b;
                for (int c = 0; c <= i; c++) {
                    if (bool[c]) {
                        Toast.makeText(MainActivity.this, "" + s[c], Toast.LENGTH_SHORT).show();
                    }
                }

            }
        });

        //确认取消监听
        builder.setPositiveButton("确认", new DialogInterface.OnClickListener() {
            @Override
            public void onClick(DialogInterface dialogInterface, int i) {
                Toast.makeText(MainActivity.this, "确认", Toast.LENGTH_SHORT).show();
            }
        });
        builder.setNegativeButton("取消", new DialogInterface.OnClickListener() {
            @Override
            public void onClick(DialogInterface dialogInterface, int i) {
                Toast.makeText(MainActivity.this, "取消", Toast.LENGTH_SHORT).show();
            }
        });

        //创建构造者对象
        AlertDialog dialog = builder.create();
        //展示到页面
        dialog.show();

    }

效果如下
在这里插入图片描述

四.水平对话框

1…首先在布局文件创建一个属性如下


 <Button
        android:id="@+id/bu_level_progress_bar_dialog_box"
        android:layout_width="match_parent"
        android:layout_height="0dp"
        android:layout_weight="1"
        android:background="#fff"
        android:layout_marginLeft="30dp"
        android:layout_marginTop="30dp"
        android:layout_marginRight="30dp"
        android:text="水平进度条对话框"
        android:textSize="25dp"
        android:onClick="onClick"
        />

2.初始化控件
3.创建进度对话框
设置属性(最大值进度)(展示方式:精准或模糊)
4.获取构造者并展示.(一定不要忘了展示)
5.接下来我们使用了计时器来完成(当然也可以使用别的休眠方式)
创建定时器对象
使用定时器对象准备计时重写TimerTask方法
这个时候用一个属性来保存进度值
每次隔几秒更新一下进度并更新进度
大于或等于最大进度时我们需要关闭计时器和弹框
计时器后面两个参数
第一个是多少秒后开始即使
第二个参数每次即使多少秒


 @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        //初始化控件
        buLevelProgressBarDialogBox= (Button) findViewById(R.id.bu_level_progress_bar_dialog_box);
    }
    
	//触发点击事件
    public void onClick(View view) {
        //判断点击的事件
        switch (view.getId()) {
            	//水平对话框
            	case R.id.bu_level_progress_bar_dialog_box:
                //水平对话框方法
                LevelMethod();
                break; 
                }
   		 }
 	//水平进度对话框
    private void LevelMethod() {
     	//创建进度对话框
        final ProgressDialog progressDialog = new ProgressDialog(this);
        //设置属性
        progressDialog.setProgressStyle(ProgressDialog.STYLE_HORIZONTAL);
        progressDialog.setMax(100);
        //展示
        progressDialog.show();
        //创建定时器对象
        final Timer timer = new Timer();
        timer.schedule(new TimerTask() {
            int index = 0;

            @Override
            public void run() {
                if (index >= 100) {
                    //取消计时器
                    timer.cancel();
                    //关闭弹框
                    progressDialog.dismiss();
                }
                //更新进度

                progressDialog.setProgress(index += 20);
            }
        }, 0, 1000);
    }

效果如下
在这里插入图片描述

五.圆形对话框

1…首先在布局文件创建一个属性如下


   <Button
        android:id="@+id/bu_round_progress_bar_dialog_box"
        android:layout_width="match_parent"
        android:layout_height="0dp"
        android:layout_weight="1"
        android:background="#fff"
        android:layout_marginLeft="30dp"
        android:layout_marginTop="30dp"
        android:layout_marginRight="30dp"
        android:text="圆形进度对话框"
        android:textSize="25dp"
        android:onClick="onClick"
        />

2.初始化控件
3.创建进度对话框
设置属性(最大值进度)(展示方式:精准或模糊)
4.获取构造者并展示.(一定不要忘了展示)
5.接下来我们使用了计时器来完成(当然也可以使用别的休眠方式)
创建定时器对象
使用定时器对象准备计时重写TimerTask方法
这个时候用一个属性来保存进度值
每次隔几秒更新一下进度(不要把展示出来)
大于或等于最大进度时我们需要关闭计时器和弹框
计时器后面两个参数
第一个是多少秒后开始即使
第二个参数每次即使多少秒



 @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        //初始化控件
        buRoundProgressBarDialogBox= (Button) findViewById(R.id.bu_round_progress_bar_dialog_box);
    }
    
	//触发点击事件
    public void onClick(View view) {
        //判断点击的事件
        switch (view.getId()) {
            	//模糊对话框
            	case R.id.bu_round_progress_bar_dialog_box:
                //模糊对话框方法
                RoundMethod();
                break; 
                }
   		 }
   		private void RoundMethod() {
   		//创建进度条对话框
        final ProgressDialog dialog = new ProgressDialog(MainActivity.this);
        //设置属性
        dialog.setProgressStyle(ProgressDialog.STYLE_SPINNER);
        dialog.setMax(100);
        dialog.setMessage("拼命加载中");
        //展示
        dialog.show();
        //定义计时器
        final Timer timer = new Timer();
        timer.schedule(new TimerTask() {
            int progress = 0;

            @Override
            public void run() {
                if (progress == 100) {
                    dialog.dismiss();
                    timer.cancel();
                }
                dialog.setProgress(progress += 20);
            }

        }, 0, 1000);
    }

效果如下
在这里插入图片描述

六.日期对话框

1…首先在布局文件创建一个属性如下


<Button
        android:id="@+id/bu_data_select_dialog_box"
        android:layout_width="match_parent"
        android:layout_height="0dp"
        android:layout_weight="1"
        android:background="#fff"
        android:layout_marginLeft="30dp"
        android:layout_marginTop="30dp"
        android:layout_marginRight="30dp"
        android:text="日期选择对话框"
        android:textSize="25dp"
        android:onClick="onClick"
        />

2.初始化控件
3.这里为什么要获取日历呢!
因为我们正常情况下都是先看当前日历
所以要获取日历对象用法很简单
calendar.get(Calendar.年) (这里的年使用英文来写可换成年,月,日,小时,分等等)

4创建日期对象即DatePickerDialog(上下文,监听)
会自动生成重写onDateSet
四个参数
第一个用不到
第二个年
第三个月
第四个日
我们还要在监听最后面设置默认日期
使用日历来获取当前日期
第一个年
第二个月
第三个日


 @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        //初始化控件
        buDataSelectDialogBox= (Button) findViewById(R.id.bu_data_select_dialog_box);
    }
    
	//触发点击事件
    public void onClick(View view) {
        //日期点击的事件
        switch (view.getId()) {
            	//日期对话框
            	case R.id.bu_data_select_dialog_box:
                //日期对话框方法
                DataMethod();
                break; 
                }
   		 }

	 //日期选择对话框
    private void DataMethod() {
  		//创建日历
        Calendar calendar = Calendar.getInstance();
        //日期
        new DatePickerDialog(MainActivity.this, new DatePickerDialog.OnDateSetListener() {
            @Override
            public void onDateSet(DatePicker datePicker, int i, int i1, int i2) {
                //修改之后
                Toast.makeText(MainActivity.this, i + "-" + (i1 + 1) + "-" + i2, Toast.LENGTH_SHORT).show();
            }
        }, calendar.get(Calendar.YEAR), calendar.get(Calendar.MONTH), calendar.get(Calendar.DAY_OF_YEAR)).show();//默认选中状态一般使用日历来完成设置当前时间
    }

效果如下
在这里插入图片描述

七.时间对话框

1…首先在布局文件创建一个属性如下


<Button
        android:id="@+id/bu_time_select_dialog_box"
        android:layout_width="match_parent"
        android:layout_height="0dp"
        android:layout_weight="1"
        android:background="#fff"
        android:layout_marginLeft="30dp"
        android:layout_marginTop="30dp"
        android:layout_marginRight="30dp"
        android:text="时间选择对话框"
        android:textSize="25dp"
        android:onClick="onClick"
        />

2.初始化控件
3.这里为什么要获取日历呢!
因为我们正常情况下都是先看当前日历
所以要获取日历对象用法很简单
calendar.get(Calendar.年) (这里的年使用英文来写可换成年,月,日,小时,分等等)

4创建日期对象即TimePickerDialog(上下文,监听)
会自动生成重写onTimeSet
四个参数
第一个用不到
第二个小时
第三个分
我们还要在监听最后面设置默认日期
使用日历来获取当前日期
第一个小时
第二个分



 @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        //初始化控件
        buTimeSelectDialogBox= (Button) findViewById(R.id.bu_time_select_dialog_box);
    }
    
	//触发点击事件
    public void onClick(View view) {
        //判断点击的事件
        switch (view.getId()) {
            	//时间对话框
            	case R.id.bu_common_dialog_box:
                //时间对话框方法
                TimeMethod();
                break; 
                }
   		 }
	//时间选择对话框
    private void TimeMethod() {
        //创建日历对象
        Calendar calendar = Calendar.getInstance();
        new TimePickerDialog(MainActivity.this, new TimePickerDialog.OnTimeSetListener() {
            @Override
            public void onTimeSet(TimePicker timePicker, int i, int i1) {
                Toast.makeText(MainActivity.this, "" + i + "." + i1, Toast.LENGTH_SHORT).show();//时,分,true有内圈 false无内圈
            }
        }, calendar.get(Calendar.HOUR), calendar.get(Calendar.MINUTE), false).show();

    }

效果如下

八.自定义对话框

1…首先在布局文件创建一个属性如下


<Button
            android:id="@+id/bu_custom3_dialog_box"
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            android:background="#ffffff"
            android:text="自定义对话框2"
            android:layout_marginRight="20dp"
            android:layout_marginLeft="20dp"
            android:textSize="25dp"
            android:onClick="onClick"
            />

创建一个普通java类续成对话框(Dialog)并创建相对应的xml文件来放自己想要展示的数据

public class Custom3Dialog extends Dialog {

    private TextView tvCustom;
    private TextView tvMessage;
    private Button buCustom3Tu;
    private Button buCustom3Wu;

    //可以自己输入修改一些属性内容
    private String strtvCustom,strtvMessage,strbuCustom3Tu,strbuCustom3Wu;

    public Custom3Dialog(@NonNull Context context) {
        super(context);
    }

    //创建启动
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.custom3);

        tvCustom = (TextView) findViewById(R.id.tv_custom);
        tvMessage = (TextView) findViewById(R.id.tv_message);
        buCustom3Tu = (Button) findViewById(R.id.bu_custom3_tu);
        buCustom3Wu = (Button) findViewById(R.id.bu_custom3_wu);

        //修改属性内容的方法
        updataUntrue();
        //设置按钮监听
        buCustom3Tu.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                //调用接口里的方法
                buCustom3Tulentener.TuClick();
                //关闭
                dismiss();
            }
        });


        buCustom3Wu.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                buCustom3Wulentener.WuClick();
                //关闭
                dismiss();
            }
        });


        tvCustom.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                dismiss();
            }
        });





    }

    private void updataUntrue() {

        if(strtvCustom!=null){
            tvCustom.setText(strtvCustom);
        }

        if(strtvMessage!=null){
            tvMessage.setText(strtvMessage);
        }

        if(strbuCustom3Tu!=null){
            buCustom3Tu.setText(strbuCustom3Tu);
        }

        if(strbuCustom3Wu!=null){
            buCustom3Wu.setText(strbuCustom3Wu);
        }

    }


    //接口吐槽
    public interface BuCustom3Tulentener{
        void TuClick();
    }
    private BuCustom3Tulentener buCustom3Tulentener;
    public BuCustom3Tulentener getBuCustom3Tulentener() {
        return buCustom3Tulentener;
    }
    public void setBuCustom3Tulentener(BuCustom3Tulentener buCustom3Tulentener) {
        this.buCustom3Tulentener = buCustom3Tulentener;
    }
    //


    //接口五星
    public interface BuCustom3Wulentener{
        void WuClick();
    }
    private BuCustom3Wulentener buCustom3Wulentener;

    public BuCustom3Wulentener getBuCustom3Wulentener() {
        return buCustom3Wulentener;
    }

    public void setBuCustom3Wulentener(BuCustom3Wulentener buCustom3Wulentener) {
        this.buCustom3Wulentener = buCustom3Wulentener;
    }
    //


    //关闭

    //set get
    public String getStrtvCustom() {
        return strtvCustom;
    }

    public void setStrtvCustom(String strtvCustom) {
        this.strtvCustom = strtvCustom;
    }

    public String getStrtvMessage() {
        return strtvMessage;
    }

    public void setStrtvMessage(String strtvMessage) {
        this.strtvMessage = strtvMessage;
    }

    public String getStrbuCustom3Tu() {
        return strbuCustom3Tu;
    }

    public void setStrbuCustom3Tu(String strbuCustom3Tu) {
        this.strbuCustom3Tu = strbuCustom3Tu;
    }

    public String getStrbuCustom3Wu() {
        return strbuCustom3Wu;
    }

    public void setStrbuCustom3Wu(String strbuCustom3Wu) {
        this.strbuCustom3Wu = strbuCustom3Wu;
    }

}

 @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        //初始化控件
        buCustom3DialogBox = (Button) findViewById(R.id.bu_custom3_dialog_box);
    }
    
	//触发点击事件
    public void onClick(View view) {
        //判断点击的事件
        switch (view.getId()) {
            	//普通对话框
            	case R.id.bu_custom3_dialog_box:
                //普通对话框方法
                custom3Method();
                break; 
                }
   		 }
 	//自定义对话框方法精良版
    private void custom3Method() {
        //创建自定义类对象
        Custom3Dialog custom3Dialog = new Custom3Dialog(this);
        //改变内容想要改变则填入想填入的内容
       /* custom3Dialog.setStrtvCustom("");
        custom3Dialog.setStrtvMessage("");
        custom3Dialog.setStrbuCustom3Tu("");
        custom3Dialog.setStrbuCustom3Wu("");
		*/
        //创建对应的监听
        custom3Dialog.setBuCustom3Tulentener(new Custom3Dialog.BuCustom3Tulentener() {
            @Override
            public void TuClick() {
                Toast.makeText(MainActivity.this, "请求你不要吐槽", Toast.LENGTH_SHORT).show();
            }
        });

        custom3Dialog.setBuCustom3Wulentener(new Custom3Dialog.BuCustom3Wulentener() {
            @Override
            public void WuClick() {
                Toast.makeText(MainActivity.this, "谢谢您的五星好评", Toast.LENGTH_SHORT).show();
            }
        });


        //展示
        custom3Dialog.show();
    }

效果如下
在这里插入图片描述

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值