在用popwindow时,如果退出当前activity时闪现了一下黑屏,但是程序也是正常的,并没有崩溃,这里的问题在于消失时并没有清除所有的flag
public class LwPopupWindow {
private View inflate;
private PopupWindow window;
public LwPopupWindow(Context context, int LayoutId) {
this.inflate = LayoutInflater.from(context).inflate(LayoutId, null);
}
public void showPopUp(final Activity context,final View parent) {//parent 显示的位置 例如点击的button
if (window == null) {
window = new PopupWindow(inflate, 160, LayoutParams.WRAP_CONTENT);//inflate 要显示的布局
// 设置整个popupwindow的样式。
window.setBackgroundDrawable(context.getResources().getDrawable(
R.drawable.ic_launcher));//必填
// 使窗口里面的空间显示其相应的效果,比较点击button时背景颜色改变。
// 如果为false点击相关的空间表面上没有反应,但事件是可以监听到的。
// listview的话就没有了作用。
WindowManager.LayoutParams lp = context.getWindow().getAttributes();
lp.alpha = 1.0f;
context.getWindow().setAttributes(lp);
window.setFocusable(true);// 如果不设置setFocusable为true,popupwindow里面是获取不到焦点的,那么如果popupwindow里面有输入框等的话就无法输入。
window.setOutsideTouchable(true);
window.setAnimationStyle(android.R.style.Animation_Dialog); // 设置显示动画
int[] location = new int[2];
parent.getLocationOnScreen(location);
window.setOnDismissListener(new OnDismissListener() {
@Override
public void onDismiss() {
// ----------------------------重点--------------------------------
WindowManager.LayoutParams lp = context.getWindow().getAttributes();
lp.alpha = 1.0f;
context.getWindow().setAttributes(lp);
context.getWindow().clearFlags(WindowManager.LayoutParams.FLAG_DIM_BEHIND);
}
});
}
window.showAsDropDown(parent);
}
}