自定义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(常规用法)