Dialog封装大全NiceDialog一个强大的轮子

今天无意间发现了这个东东,是一个基于DialogFragment的扩展,封装的比较好,至于DialogFragment的基本使用,可以参考我之前的一篇文章DialogFragment的使用及利用自定义interface点击事件并解决旋转屏幕点击事件失效问题。下来看看这个

NiceDialog封装的效果如何:
这里写图片描述这里写图片描述这里写图片描述这里写图片描述这里写图片描述这里写图片描述

下面来说说如何使用:

Step 1. 添加JitPack仓库 在当前项目等根目录下的 build.gradle 文件中添加如下内容:

allprojects {
repositories {

maven { url “https://jitpack.io” }
}
}

Step 2. 添加项目依赖

dependencies {
compile ‘com.github.Othershe:NiceDialog:1.1.1’
}

Step 3. 配置、展示dialog

NiceDialog.init()
       .setLayoutId(R.layout.dialog)     //设置dialog布局文件
       .setConvertListener(new ViewConvertListener() {     //进行相关View操作的回调
              @Override
              public void convertView(ViewHolder holder, final BaseNiceDialog dialog) {

                  holder.setOnClickListener(R.id.cancel, new View.OnClickListener() {
                       @Override
                       public void onClick(View v) {
                          dialog.dismiss();
                           }
                            });
                            //如果还有其他监听可以继续添加
              }
          })
      .setDimAmount(0.3f)     //调节灰色背景透明度[0-1],默认0.5f
      .setShowBottom(true)     //是否在底部显示dialog,默认flase
      .setMargin()     //dialog左右两边到屏幕边缘的距离(单位:dp),默认0dp
      .setWidth()     //dialog宽度(单位:dp),默认为屏幕宽度
      .setHeight()     //dialog高度(单位:dp),默认为WRAP_CONTENT
      .setOutCancel(false)     //点击dialog外是否可取消,默认true
   .setAnimStyle(R.style.EnterExitAnimation)//设置dialog进入、退出的动画style(底部显示的dialog有默认动画)
    .show(getSupportFragmentManager());     //显示dialog

注意: setMargin()和setWidth()选择一个即可

更多用法:

1、创建一个继承BaseNiceDialog的类,如果需要传参可仿照如下方式,也是就是常用的Fragment传参方式

 public static class ConfirmDialog extends BaseNiceDialog {
        private String type;

        public static ConfirmDialog newInstance(String type) {
            Bundle bundle = new Bundle();
            bundle.putString("type", type);
            ConfirmDialog dialog = new ConfirmDialog();
            dialog.setArguments(bundle);
            return dialog;
        }

        @Override
        public void onCreate(@Nullable Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            Bundle bundle = getArguments();
            if (bundle == null) {
                return;
            }
            type = bundle.getString("type");
        }

        @Override
        public int intLayoutId() {
            return R.layout.confirm_layout;
        }

        @Override
        public void convertView(ViewHolder holder, final BaseNiceDialog dialog) {
            if ("1".equals(type)) {
                holder.setText(R.id.title, "提示");
                holder.setText(R.id.message, "您已支付成功!");
            } else if ("2".equals(type)) {
                holder.setText(R.id.title, "警告");
                holder.setText(R.id.message, "您的账号已被冻结!");
            }
            holder.setOnClickListener(R.id.cancel, new View.OnClickListener() {
                @Override
                public void onClick(View v) {
                    dialog.dismiss();
                }
            });

            holder.setOnClickListener(R.id.ok, new View.OnClickListener() {
                @Override
                public void onClick(View v) {
                    dialog.dismiss();
                }
            });
        }
    }

2、展示dialog

  public void showDialog5(View view) {
        ConfirmDialog.newInstance("1")
                .setMargin(60)
                .setOutCancel(false)
                .show(getSupportFragmentManager());
    }

    public void showDialog6(View view) {
        ConfirmDialog.newInstance("2")
                .setMargin(60)
                .setOutCancel(false)
                .show(getSupportFragmentManager());
    }

这里写图片描述这里写图片描述

本文参考:https://github.com/Othershe/NiceDialog

  • 0
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
简介:基于DialogFragment的扩展,让dialog的使用更方便原理:http://www.jianshu.com/p/0529433d4522示例预览:基本用法:Step 1. 添加JitPack仓库 在当前项目等根目录下的 build.gradle 文件中添加如下内容:allprojects {     repositories {        ...         maven { url "https://jitpack.io" }     } }Step 2. 添加项目依赖dependencies {         compile 'com.github.Othershe:NiceDialog:1.1.0'}Step 3. 配置、展示dialogNiceDialog.init()           .setLayoutId(R.layout.dialog)     //设置dialog布局文件           .setConvertListener(new ViewConvertListener() {     //进行相关View操作的回调               @Override               public void convertView(ViewHolder holder, final BaseNiceDialog dialog) {               }           })           .setDimAmount(0.3f)     //调节灰色背景透明度[0-1],默认0.5f           .setShowBottom(true)     //是否在底部显示dialog,默认flase           .setMargin()     //dialog左右两边到屏幕边缘的距离(单位:dp),默认0dp           .setWidth()     //dialog宽度(单位:dp),默认为屏幕宽度           .setHeight()     //dialog高度(单位:dp),默认为WRAP_CONTENT           .setOutCancel(false)     //点击dialog外是否可取消,默认true           .setAnimStyle(R.style.EnterExitAnimation)     //设置dialog进入、退出的动画style           .show(getSupportFragmentManager());     //显示dialog注意: setMargin()和setWidth()选择一个即可更多用法:1、创建一个继承BaseNiceDialog的类,如果需要传参可仿照如下方式,也是就是常用的Fragment传参方式public class ConfirmDialog extends BaseNiceDialog {             private String type;             public static ConfirmDialog newInstance(String type) {                     Bundle bundle = new Bundle();         bundle.putString("type", type);                     ConfirmDialog dialog = new ConfirmDialog();         dialog.setArguments(bundle);                     return dialog;     }             @Override     public void onCreate(@Nullable Bundle savedInstanceState) {                super.onCreate(savedInstanceState);                     Bundle bundle = getArguments();         type = bundle.getString("type");     }             @Override     public int intLayoutId() {                 return R.layout.dialog;     }             @Override     public void convertView(ViewHolder holder, final BaseNiceDialog dialog) {     } }2、展示dialogConfirmDialog.newInstance("1")              .setMargin(60)              .setOutCancel(false)              .show(getSupportFragmentManager());

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值