在项目中我们经常需要在activity中弹出一个popupWindow,为了追求用户体验,我们会设置弹框出现后,activity背景变会,弹框消失,屏幕变量
//初始化PopupWindow
private void initPop() { LayoutInflater inflater = LayoutInflater.from(this); View view = inflater.inflate(R.layout.dialog_book, null); popwindow = new PopupWindow(view,screenWidth*4/5 , ViewGroup.LayoutParams.WRAP_CONTENT, true); popwindow.setFocusable(true); popwindow.setOutsideTouchable(true); popwindow.setBackgroundDrawable(new ColorDrawable()); ImageView iv_cancel= (ImageView) view.findViewById(R.id.iv_cancel); LinearLayout ll_sure = (LinearLayout) view.findViewById(R.id.ll_order); popwindow.setOnDismissListener(new PopupWindow.OnDismissListener() { @Override public void onDismiss() { makeWindowLight();//变亮 ll_submit.setBackgroundResource(R.color.unable); ll_submit.setEnabled(false); } }); iv_cancel.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { popwindow.dismiss(); ll_submit.setBackgroundResource(R.color.unable); ll_submit.setEnabled(false); } }); ll_sure.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { popwindow.dismiss(); Intent intent = new Intent(BookActivity.this, OrderActivity.class); startActivity(intent); BookActivity.this.finish(); } }); }
//调起PopupWindow
popwindow.showAtLocation(ll_main, Gravity.CENTER, 0, 0); makeWindowDark();//变暗
/** * 让屏幕变暗 */ public void makeWindowDark() { Window window = getWindow(); WindowManager.LayoutParams lp = window.getAttributes(); lp.alpha = 0.5f; window.setAttributes(lp); } /** * 让屏幕变亮 */ public void makeWindowLight() { Window window = getWindow(); WindowManager.LayoutParams lp = window.getAttributes(); lp.alpha = 1f; window.setAttributes(lp); }
在普通activity中这样就已经实现了 但是在我的首页中发现这样写界面还是不变暗
原因是我的首页写在一个TabHost中
只需要做稍微修改就可以了(如红色部分)
Window window = getParent().getWindow();