設置popWindow背景變暗


1.//popWindow命名為window。

//首先給window設置一個背景顏色

  ColorDrawable cd = new ColorDrawable(0x000000);
  window.setBackgroundDrawable(cd);
  // 產生背景變暗效果,設置透明度
  WindowManager.LayoutParams lp = getWindow().getAttributes();
  lp.alpha = 0.4f;

//之前不寫這一句也是可以實現的,這次突然沒效果了。網搜之后加上了這一句就好了。據說是因為popUpWindow沒有getWindow()方法。
  getWindow().addFlags(WindowManager.LayoutParams.FLAG_DIM_BEHIND);
  getWindow().setAttributes(lp);

//這樣就設置好了變暗的效果

2.//然后再設置退出popupwindow時取消暗背景

window.setOnDismissListener(new OnDismissListener() {
   
   @Override
   public void onDismiss() {
    //在dismiss中恢復透明度
    WindowManager.LayoutParams lp=getWindow().getAttributes();
    lp.alpha=1f;

    getWindow().addFlags(WindowManager.LayoutParams.FLAG_DIM_BEHIND);
    getWindow().setAttributes(lp);
   }
  });

 

//這樣寫效率不高,代碼重復。優化之后:

private void darkenBackgroud(Float bgcolor) {
  WindowManager.LayoutParams lp = getWindow().getAttributes();
  lp.alpha = bgcolor;
  getWindow().addFlags(WindowManager.LayoutParams.FLAG_DIM_BEHIND);
  getWindow().setAttributes(lp);
 }

調用時:

1.使變暗:darkenBackgroud(0.4f);

2.使恢復:darkenBackgroud(1f);

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM