干货EasyDialog2.1,更优雅和快速地创建并使用Dialog。

目录

  • 废话不多说,上代码。
      • 导入依赖
      • 使用
  • 原理
  • Api

废话不多说,上代码。

导入依赖

均已上传仓库,有大概2小时的处理延时
//support SDK
dependencies {
	...
	api "com.github.isong0623:EasyDialog:2.1-support"
	//2.1需要设置背景颜色 否则是透明的 暂不维护support
	...
}
//AndroidX SDK
dependencies {
	...
	api "com.github.isong0623:EasyDialog:2.2-androidx"
	...
}

使用

new EasyDialog(R.layout.dialog_alipay_edit_text,context).setOnBindDialogListener(new EasyDialog.OnBindDialogListener() {
            @Override
            public void onBindDialog(EasyDialogHolder holder) {
                holder.setText(R.id.edt_text, Constants.AliPay.getTag("Balance"+ PinyinUtils.ccs2Pinyin(strNames[position]),strHints[position]));
                holder.setOnClickListener(R.id.tv_cancel,v->holder.dismissDialog());
                holder.setOnClickListener(R.id.tv_confirm,v ->{
                    Constants.AliPay.setTag("Balance"+ PinyinUtils.ccs2Pinyin(strNames[position]),holder.getViewAsEditText(R.id.edt_text).getText().toString());
                    convert(viewHolder,null,position,null);
                    holder.dismissDialog();
                });
            }
        })
        .setForegroundResource(R.drawable.ic_launcher_background)//可选
        .setBackgroundColor(Color.parseColor("#4d000000"))//可选
        .setAllowDismissWhenBackPressed(false)//可选  默认 false
        .setDialogHeight(dp2px(200f))//最好加上
        .setOnShowListener(null)//可选
        .setOnDismissListener(null)//可选
        .setAllowDismissWhenTouchOutside(false)//可选 默认true
        //.showDialogInDpPosition(0,0)//可选 左上角位置在0 0
        //.showDialogInPxPosition(0,0)//可选 左上角位置在0 0
        //.showDialogInSpPosition(0,0)//可选 左上角位置在0 0
        .showDialog();//可选 居中显示

原理

dialog 的window为屏幕大小
window的布局是屏幕大小的透明的FrameLayout(代码中的BackGround)
这个FrameLayout包含着你看到的Dialog(代码中Foreground)

Api

干货EasyDialog2.1,更优雅和快速地创建并使用Dialog。_第1张图片

你可能感兴趣的:(Android)