- 基于DialogFragment的扩展,让dialog的使用更方便
- 原理:http://www.jianshu.com/p/0529433d4522
Step 1. 添加JitPack仓库
在当前项目根目录下的 build.gradle 文件中添加如下内容:
allprojects { repositories { ... maven { url "https://jitpack.io" } } }
Step 2. 添加项目依赖
dependencies { implementation 'com.github.SheHuan:NiceDialog:1.2.0' }
Step 3. 配置、展示dialog
NiceDialog.init() .setLayoutId(R.layout.dialog) //设置dialog布局文件 .setTheme(R.style.MyDialog) // 设置dialog主题,默认主题继承自Theme.AppCompat.Light.Dialog .setConvertListener(new ViewConvertListener() { //进行相关View操作的回调 @Override public void convertView(ViewHolder holder, final BaseNiceDialog dialog) { } }) .setDimAmount(0.3f) //调节灰色背景透明度[0-1],默认0.5f .setGravity() //可选,设置dialog的位置,默认居中,可通过系统Gravity的类的常量修改,例如Gravity.BOTTOM(底部),Gravity.Right(右边),Gravity.BOTTOM|Gravity.Right(右下) .setMargin() //dialog左右两边到屏幕边缘的距离(单位:dp),默认0dp .setWidth() //dialog宽度(单位:dp),默认为屏幕宽度,-1代表WRAP_CONTENT .setHeight() //dialog高度(单位:dp),默认为WRAP_CONTENT .setOutCancel(false) //点击dialog外是否可取消,默认true .setAnimStyle(R.style.EnterExitAnimation) //设置dialog进入、退出的自定义动画;根据设置的Gravity,默认提供了左、上、右、下位置进入退出的动画 .show(getSupportFragmentManager()); //显示dialog
注意: setMargin()和setWidth()选择一个即可
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) { } }
ConfirmDialog.newInstance("1") .setMargin(60) .setOutCancel(false) .show(getSupportFragmentManager());