美文网首页
Github项目之Dialog封装

Github项目之Dialog封装

作者: NoBugException | 来源:发表于2020-01-19 15:52 被阅读0次

    对话框是Android比较常用的UI了,由于对话框的依赖库特别多,特别杂,每个项目所使用的的依赖库有所区别,主要有两点区别较大:(1)对话框的导包,从android.app,到support v4,support v7,v11,v17,android.appcompat,最后到androidx.appcompat;(2)样式的变化,对话框在初始化时,也许会传递一个默认的样式,随着Android版本的迭代,一些老一点的样式已被废弃,导致版本不兼容;本文主要基于androidx的AlertDialog讲解。

    图片.png

    如图所示的对话框,原生的AlertDialog默认样式已经不能满足需求,我们必须自定义布局和主题样式来实现。

    Github地址如下:

    https://github.com/NoBugException/AllDialog

    该项目是AlertDialog引用的是androidx的依赖包,如果需要换成普通的,还请下载下来自行修改。

    v1.0.1

    该版本为基本封装,主要支持的功能有:

    (1)支持设置AlertDialog的宽度;
    (2)添加布局;
    (3)设置主题;
    (4)设置cancelable值,点击外围是否关闭对话框;
    (5)设置OnDismissListener和OnCancelListener监听;
    

    基本使用如下:

            View view =  LayoutInflater.from(this).inflate(R.layout.my_dialog_view, null);
            ImageView alldialog_close = view.findViewById(R.id.alldialog_close);
            alldialog_close.setOnClickListener(new View.OnClickListener() {
                @Override
                public void onClick(View v) {
                    AllDialog.with(MainActivity.this).dismiss();
                }
            });
            AllDialog.with(this)
                    .buildDialog(true, R.style.style_all_dialog, null, null)
                    .setWidth(250)//对话框宽度,单位为dp,默认是屏幕宽度的五分之四
                    .addView(view)
                    .show();
    

    with方法传递一个Context;
    buildDialog方法新建一个Dialog对象,可传递cancelable、主题、OnDismissListener和OnCancelListener监听;
    setWidth方法可以设置对话框的宽度,单位为dp,默认是屏幕宽度的五分之四;
    addView方法是该版本封装的核心内容了,addView可以传递任意View,但不仅如此,addView方法还可以多次调用,多个view从上到下线程排列;
    show方法最终显示对话框。

    我们来看一下这张图:

    图片.png

    假设我们需要做成上图样子的对话框,那么直接使用addView添加一个布局即可,也可以调用两次addView,分别添加上部分和下部分,如:

                    .addView(上部分)
                    .addView(下部分)
    

    v1.1.1

    引用:

    allprojects {
        repositories {
            maven { url 'https://www.jitpack.io' }
        }
    }
    
    dependencies {
        implementation 'com.github.NoBugException:AllDialog:1.1.1'
    }
    

    修改内容:

    (1)新增黑色半透明背景的转圈对话框
    (2)基本封装下新增设置高度;
    

    代码示例:

                LoadingBean loadingBean = new LoadingBean();
                loadingBean.setRadii(6);
                loadingBean.setText("请稍等...");
                loadingBean.setTextColor(Color.parseColor("#FFFFFF"));
    
                AllDialog.with(this)
                        .buildLoadingDialog(loadingBean, null, null)
                        .setWidth(100)//对话框宽度,单位为dp,默认是屏幕宽度的五分之四
                        .setHeight(100)//对话框高度,单位为dp
                        .show();
    

    效果如下:

    半透明黑色背景加载对话框.png

    v1.2.1

    引用:

    allprojects {
        repositories {
            maven { url 'https://www.jitpack.io' }
        }
    }
    
    dependencies {
        implementation 'com.github.NoBugException:AllDialog:1.2.1'
    }
    

    修改内容:

    (1)新增白色背景的加载对话框
    

    代码示例:

                LoadingBean loadingBean3 = new LoadingBean();
                loadingBean3.setRadii(6);
                loadingBean3.setText("请稍等...");
                loadingBean3.setTextColor(Color.parseColor("#7700CE"));
                loadingBean3.setType((byte) 1);
    
                AllDialog.with(this)
                        .buildLoadingDialog(loadingBean3, null, null)
                        //.setWidth(150)//对话框宽度,单位为dp,默认是屏幕宽度的五分之四
                        //.setHeight(150)//对话框高度,单位为dp
                        .show();
    

    效果如下:

    image3.png

    v1.2.2

    引用:

    allprojects {
        repositories {
            maven { url 'https://www.jitpack.io' }
        }
    }
    
    dependencies {
        implementation 'com.github.NoBugException:AllDialog:1.2.2'
    }
    

    修改内容:

    (1)新增对话框灰色背景灰暗程度的参数设置;
    (2)新增对话框方位的设置;
    

    代码示例:

                AllDialog.with(this)
                        .buildLoadingDialog(loadingBean3, null, null)
                        //.setWidth(150)//对话框宽度,单位为dp,默认是屏幕宽度的五分之四
                        //.setHeight(150)//对话框高度,单位为dp
                        .setDimAmount(0)//设置对话框背景灰暗程度
                        .gravity(Gravity.BOTTOM, 0, 100)//方位
                        .show();
    

    v1.3.3

    引用:

    allprojects {
        repositories {
            maven { url 'https://www.jitpack.io' }
        }
    }
    
    dependencies {
        implementation 'com.github.NoBugException:AllDialog:1.3.3'
    }
    

    新增一个普通对话框

    (1)可以配置标题文本,标题颜色,标题文本大小;
    (2)可以配置正文内容,文本文字颜色,正文文本大小;
    (3)可以配置按钮文本大小;
    (4)按钮监听回调;
    

    代码示例:

                NormalBean normalBean1 = new NormalBean();
                normalBean1.setTitle("中国大陆");
                normalBean1.setMessage("西方学者曾多次断言:中国遇到的一个长期问题就是养活不了占世界近20%的人口事实证明新中国成立以来勤劳的中国人");
                normalBean1.setTitleColor(Color.parseColor("#1233F0"));
                normalBean1.setMessageColor(Color.parseColor("#2C9AA8"));
                normalBean1.setTitleTextSize(17);
                normalBean1.setMessageTextSize(14);
                normalBean1.setButtonTextSize(14);
                normalBean1.setType((byte) 1);
                AllDialog.with(this)
                        .buildNormalDialog(normalBean1, new ButtonListener() {
                            @Override
                            public void confirm() {
                                AllDialog.with(MainActivity.this).dismiss();
                            }
    
                            @Override
                            public void cancel() {
                                AllDialog.with(MainActivity.this).dismiss();
                            }
                        }, null, null)
                        .show();
    

    效果如下:

    351.gif

    v1.4.3

    引用:

    allprojects {
        repositories {
            maven { url 'https://www.jitpack.io' }
        }
    }
    
    dependencies {
        implementation 'com.github.NoBugException:AllDialog:1.4.3'
    }
    

    新增一个底部弹出的对话框

    该功能就不做过多的参数封装以及优化了,这里直接给出效果给大家参考。
    

    代码示例:

                AllDialog.with(this)
                        .buildBottomDialog(new ButtonListener() {
                            @Override
                            public void confirm() {
                                AllDialog.with(MainActivity.this).dismiss();
                            }
    
                            @Override
                            public void cancel() {
                                AllDialog.with(MainActivity.this).dismiss();
                            }
                        }, null, null)
                        .show();
    

    效果如下:

    353.gif

    v1.5.3

    引用:

    allprojects {
        repositories {
            maven { url 'https://www.jitpack.io' }
        }
    }
    
    dependencies {
        implementation 'com.github.NoBugException:AllDialog:1.5.3'
    }
    

    新增透明背景的关闭按钮的对话框

    该功能就不做过多的参数封装以及优化了,这里直接给出效果给大家参考。
    

    代码示例:

                NormalBean normalBean2 = new NormalBean();
                normalBean2.setType((byte) 2);
                AllDialog.with(this)
                        .buildNormalDialog(normalBean2, null, null, null)
                        .show();
    

    效果如下:

    image_6.png

    [本章完...]

    相关文章

      网友评论

          本文标题:Github项目之Dialog封装

          本文链接:https://www.haomeiwen.com/subject/prihactx.html