让你的Dialog变得更简洁一点吧

作者: 24K纯帅豆 | 来源:发表于2018-06-05 18:15 被阅读277次

GitHub地址

用Builder模式重新打造一个dialog,案例中有两种Builder,分别是CommonBuilder和MDBuilder,如果还想实现其他的通用dialog,继承自FRBaseDialogBuilder即可。

1、用法:

1.1、普通Dialog

private void showCommonDialog() {
    final FRDialog dialog = new FRDialog.CommonBuilder(this)
            .setContentView(R.layout.dialog_common)
            .setText(R.id.dcu_tv_cancel, "否")
            .setText(R.id.dcu_tv_confirm, "是")
            .setText(R.id.dcu_tv_title, "温馨提示")
            .setText(R.id.dcu_tv_content, "1.文字文字我是文字文字文字我是文字文字文字我是文字!\n2.文字文字文字文字文字\n3.文字文字文字文字文字")
            .setDefaultAnim()
            .show();

    dialog.setText(R.id.dcu_tv_confirm, "确定");

    dialog.setOnClickListener(R.id.dcu_tv_cancel, new FRDialogClickListener() {
        @Override
        public boolean onDialogClick(View view) {
            Toast.makeText(MainActivity.this, "点击了否", Toast.LENGTH_SHORT).show();
            return true;
        }
    });

    dialog.setOnClickListener(R.id.dcu_tv_confirm, new FRDialogClickListener() {
        @Override
        public boolean onDialogClick(View v) {
            Toast.makeText(MainActivity.this, "点击了是", Toast.LENGTH_SHORT).show();
            return false;
        }
    });
}
普通dialog

1.2、MaterialDesign Dialog

private void showMDDialog() {
    FRDialog dialog = new FRDialog.MDBuilder(this)
            .setMessage("1.文字文字我是文字文字文字我是文字文字文字我是文字!\n2.文字文字文字文字文字\n3.文字文字文字文字文字")
            .setTitle("温馨提示")
            .setNegativeAndPositive("否", "是")
            .setPositiveListener(new FRDialogClickListener() {
                @Override
                public boolean onDialogClick(View view) {
                    return true;
                }
            }).show();
}
MD效果的dialog 从底部弹出的dialog

2、特殊设置:

继承所有dialog的设置,同时还可以自定义以下设置

//设置宽度全屏
dialog.setFullWidth()

//设置从底部弹出
dialog.setFromBottom()

//设置弹出动画
dialog.setAnimation(int anim)

2018.5.24日更新

将mWidth改成mWidthOffset,不让用户设置一个具体的宽度,而是让用户去设置一个宽度比例,然后通过改变window的LayoutParams来设置dialog的宽高:

WindowManager.LayoutParams lp = window.getAttributes();
lp.width = (int) (baseBuilder.mContext.getResources().getDisplayMetrics().widthPixels * baseBuilder.mWidthOffset);
lp.height = baseBuilder.mHeight;
window.setAttributes(lp);

用法还是和之前一样:

dialog.setWidthOffset(0——1)  默认是0.9

相关文章

  • 让你的Dialog变得更简洁一点吧

    GitHub地址 用Builder模式重新打造一个dialog,案例中有两种Builder,分别是CommonBu...

  • 运动,冥想与睡眠

    很有意义的两件事情吧,说了一堆的好处,让你感觉更好,让你的自尊提升,让你变得更平静,生活更有重心,让你变得更聪明,...

  • ES6 --- 箭头函数

    箭头函数的作用: 让this 变得可以理解 让代码变得更简洁 箭头函数的基本语法 箭头函数只能做赋值,不能做声明 ...

  • 有限的目标,让人生变得更简洁……

    有时候 我们难免贪多 因为欲望 我们定下很多目标 到头来往往 什么都没有得到 我相信 能量守恒 所以我认可 要把力...

  • 做有同理心的人

    爱心会让你变得更富有。 憎恨会让你变得更痛苦。 虚情假意会让你变得更疲惫。 零容忍会让你变得更宽广。 小小的善举会...

  • 当RecycleView遇上DataBinding

    想让RecycleView的代码更简洁吗? 那就使用DataBinding吧~~ DataBinding可以直接将...

  • 2018

    2018,让自己变得更自私一点。

  • 让🍓鼻变得更光滑吧

    让草莓鼻变得光滑起来吧! 那些流传的土方其实真的不可靠,鸡蛋清敷脸容易滋生细菌,盐粒搓脸容易破坏角质层...

  • 亲爱的,你拼命的付出,拼命的讨好,好玩吗?

    有一点是毋庸质疑的,每个人都想让自己变得更好,让自己的生活看起来更满意,让自己变得比现在更完美一点,让喜欢自己的人...

  • 让你的表达更简洁易懂

    完成文章构思之后,写出来的观点很可能互相之间没有太多关联,又或者是没有进行恰当的分类显得有些混乱。 这时候就需要用...

网友评论

本文标题:让你的Dialog变得更简洁一点吧

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