自定义Dialog

自定义dialog在项目中基本都会使用,要实现在定义dialog显示效果方式不止一种,例如1.popupwindrow:可以实现,要实现dialog显示方式只需要添加相应的代码即可。

(1)常规使用继承popupwindrow

(2)设置消失监听器

setOnDismissListener(new OnDismissListener() {

@Override

public void onDismiss() {

backgroundAlpha(1f);

}

});

(3)实现backgroundAlpha方法

/**

* 设置添加屏幕的背景透明度

* @param bgAlpha

*/

public void backgroundAlpha(float bgAlpha) {

WindowManager.LayoutParams lp = context.getWindow().getAttributes();

lp.alpha = bgAlpha; //0.0-1.0

context.getWindow().setAttributes(lp);

}

产生的问题:(透明度问题):如果用这种方式添加阴影会造成页面紊乱的问题(我碰到的问题是在popupwindrow显示页会在popupwindrow以外页面显示上个Activity的页面)

产生的原因:为了解决Activity启动黑屏在styles文件里AppTheme添加android:windowIsTranslucent = true的属性

2.自定义DialogActivity可以实现,只不过在使用的过程中牵涉到Activity生命周期的问题,如果代码中没有关于生命周期的逻辑可以大胆使用

3.自定义dialog(常规用法)

你可能感兴趣的