本文共 1905 字,大约阅读时间需要 6 分钟。
需求:PopupWindow 在弹出的时候需要设置背景为半透明状态,写个简单的工具类,方法如下:
public class MainActivity extends AppCompatActivity { private PopupWindow mPop; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); findViewById(R.id.but).setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { showPop(); } }); } private void showPop(){ WindowUtil.lucencyBackground(this); View contentView = LayoutInflater.from(this).inflate(R.layout.pop,null); if (mPop == null){ mPop = new PopupWindow(contentView,ViewGroup.LayoutParams.WRAP_CONTENT,ViewGroup.LayoutParams.WRAP_CONTENT,true); } mPop.setBackgroundDrawable(new BitmapDrawable()); mPop.setContentView(contentView); mPop.setOutsideTouchable(true); mPop.showAtLocation(this.getWindow().getDecorView(), Gravity.CENTER, 0, 0); mPop.setOnDismissListener(new PopupWindow.OnDismissListener() { @Override public void onDismiss() { mPop.dismiss(); WindowUtil.cancelBackground(MainActivity.this); } }); }}public static void lucencyBackground(Activity activity) { WindowManager.LayoutParams lp = activity.getWindow().getAttributes(); lp.alpha = 0.3f; activity.getWindow().addFlags(WindowManager.LayoutParams.FLAG_DIM_BEHIND); activity.getWindow().setAttributes(lp); } public static void cancelBackground(Activity activity) { WindowManager.LayoutParams lp1 = activity.getWindow().getAttributes(); lp1.alpha = 1f; activity.getWindow().clearFlags(WindowManager.LayoutParams.FLAG_DIM_BEHIND); activity.getWindow().setAttributes(lp1); }源码连接
转载地址:http://vnsvi.baihongyu.com/