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

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

NiceDialog封装的效果如何:
Dialog封装大全NiceDialog一个强大的轮子_第1张图片Dialog封装大全NiceDialog一个强大的轮子_第2张图片Dialog封装大全NiceDialog一个强大的轮子_第3张图片Dialog封装大全NiceDialog一个强大的轮子_第4张图片Dialog封装大全NiceDialog一个强大的轮子_第5张图片Dialog封装大全NiceDialog一个强大的轮子_第6张图片

下面来说说如何使用:

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());
    }

Dialog封装大全NiceDialog一个强大的轮子_第7张图片Dialog封装大全NiceDialog一个强大的轮子_第8张图片

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

你可能感兴趣的:(Android,实用小功能)