1. 程式人生 > >popwindow顯示出現黑色閃屏效果

popwindow顯示出現黑色閃屏效果

在用popwindow時,如果退出當前activity時閃現了一下黑屏,但是程式也是正常的,並沒有崩潰,這裡的問題在於消失時並沒有清除所有的flag

public void show(View view) {
        if (mPopupWindow != null && !mPopupWindow.isShowing()) {
            // 設定顯示動畫
            // mPopupWindow.setAnimationStyle(R.style.anim_pop_slide);
            mPopupWindow.showAsDropDown(view);
            // 設定背景顏色變暗
            WindowManager.LayoutParams lp = mContext.getWindow()
                    .getAttributes();
            lp.alpha = 1f;
            mContext.getWindow().addFlags(
                    WindowManager.LayoutParams.FLAG_DIM_BEHIND);
            mContext.getWindow().setAttributes(lp);
        }
    }
在show的時候添加了背景的陰影效果,如果在複寫onDismiss方法中用如下:
  @Override
    public void onDismiss() {
        // 設定背景顏色變亮
        WindowManager.LayoutParams lp = mContext.getWindow().getAttributes();
        lp.alpha = 1.0f;
      
        mContext.getWindow().setAttributes(lp);
        onDessmissTo();
    }
就會出現黑色閃屏,正常用法如下:
  @Override
    public void onDismiss() {
        // 設定背景顏色變亮
        WindowManager.LayoutParams lp = mContext.getWindow().getAttributes();
        lp.alpha = 1.0f;
        mContext.getWindow().setAttributes(lp);
        mContext.getWindow().clearFlags(
                WindowManager.LayoutParams.FLAG_DIM_BEHIND);
        onDessmissTo();
    }

這句話
 mContext.getWindow().clearFlags(
                WindowManager.LayoutParams.FLAG_DIM_BEHIND);
必須要呼叫,達到清除背景黑色閃屏的情況