android中popupwindow彈出後,螢幕背景變成半透明

銳湃發表於2015-11-06

android中popupwindow彈出後,螢幕背景變成半透明這個效果很普通。實現的方法也很多。我使用的可能是最簡單的一種,就是設定一下getWindows的透明度。不多說上程式碼

/**
	 * 設定新增螢幕的背景透明度
	 * @param bgAlpha
	 */
	public void backgroundAlpha(float bgAlpha)
	{
		WindowManager.LayoutParams lp = getWindow().getAttributes();
            lp.alpha = bgAlpha; //0.0-1.0
                getWindow().setAttributes(lp);
	}

之所以設定成方法,是因為當popwindow關閉的時候我們還要將這個透明度改回來。

        popWin = new PopupWindow(popAddNoteType, mScreenWidth *8 /10, ViewGroup.LayoutParams.WRAP_CONTENT);
	//在PopupWindow裡面就加上下面程式碼,讓鍵盤彈出時,不會擋住pop視窗。
	popWin.setInputMethodMode(PopupWindow.INPUT_METHOD_NEEDED);    		
	popWin.setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_ADJUST_RESIZE);
	//點選空白處時,隱藏掉pop視窗
	popWin.setFocusable(true);
	popWin.setBackgroundDrawable(new BitmapDrawable());
	backgroundAlpha(1f);

       //新增pop視窗關閉事件
       popWin.setOnDismissListener(new poponDismissListener());

這裡可能有人就要問了,當我點選螢幕空白處時,pop視窗是沒了,可是背景還是半透明的,這不行啊。這裡我們就用到一個事件


/**
	 * 新增新筆記時彈出的popWin關閉的事件,主要是為了將背景透明度改回來
	 * @author cg
	 *
	 */
	class poponDismissListener implements PopupWindow.OnDismissListener{

		@Override
		public void onDismiss() {
			// TODO Auto-generated method stub
			//Log.v("List_noteTypeActivity:", "我是關閉事件");
			backgroundAlpha(1f);
		}
		
	}

上面的popWin.setOnDismissListener(new poponDismissListener());  的程式碼就是呼叫這個事件


轉自:http://blog.csdn.net/chenguang79/article/details/43016519

相關文章