Android PopupWindow背景半透明兼容方案
来源:互联网 发布:压缩 linux 编辑:程序博客网 时间:2024/05/04 07:51
大家想必对PopupWindow不会很陌生吧,我们在开发中经常会遇到要求使其背景半透明的需求,但网上的很多解决方案只能是在大部分机型上满足要求,像华为这样的机型就会发现我们原来设置的背景变暗效果的代码并没有起效果。这里我贴出最终的兼容方案:
View contentView; LayoutInflater mLayoutInflater = LayoutInflater.from(activity); contentView = mLayoutInflater.inflate(R.layout.layout_popupwindow, null); pop = new PopupWindow(contentView, ViewGroup.LayoutParams.MATCH_PARENT, (int) context.getResources().getDimension(R.dimen.y568)); TextView tvTitle = (TextView) contentView.findViewById(R.id.text); tvTitle.setText(strTitle); ListView listView = (ListView) contentView.findViewById(R.id.list); // 产生背景变暗效果 WindowManager.LayoutParams lp = activity.getWindow() .getAttributes(); lp.alpha = 0.4f; activity.getWindow().addFlags(WindowManager.LayoutParams.FLAG_DIM_BEHIND); activity.getWindow().setAttributes(lp); pop.setTouchable(true); pop.setFocusable(true); pop.setBackgroundDrawable(new BitmapDrawable()); pop.setOutsideTouchable(true); pop.showAtLocation(contentView, Gravity.BOTTOM, 0, 0); pop.update(); pop.setOnDismissListener(new PopupWindow.OnDismissListener() { // 在dismiss中恢复透明度 public void onDismiss() { WindowManager.LayoutParams lp = activity.getWindow() .getAttributes(); lp.alpha = 1f; activity.getWindow().addFlags(WindowManager.LayoutParams.FLAG_DIM_BEHIND); activity.getWindow().setAttributes(lp); } }); listView.setOnItemClickListener(onItemClickListener); listView.setAdapter(adapter);
注:特别是下面几行代码
// 产生背景变暗效果 WindowManager.LayoutParams lp = activity.getWindow() .getAttributes(); lp.alpha = 0.4f; activity.getWindow().addFlags(WindowManager.LayoutParams.FLAG_DIM_BEHIND); activity.getWindow().setAttributes(lp); pop.setTouchable(true); pop.setFocusable(true); pop.setBackgroundDrawable(new BitmapDrawable()); pop.setOutsideTouchable(true); pop.showAtLocation(contentView, Gravity.BOTTOM, 0, 0); pop.update(); pop.setOnDismissListener(new PopupWindow.OnDismissListener() { // 在dismiss中恢复透明度 public void onDismiss() { WindowManager.LayoutParams lp = activity.getWindow() .getAttributes(); lp.alpha = 1f; activity.getWindow().addFlags(WindowManager.LayoutParams.FLAG_DIM_BEHIND); activity.getWindow().setAttributes(lp); } });
网上很多方案都要求加下面这两行代码,但其实加上反而会影响华为这种机型的显示效果
ColorDrawable dw = new ColorDrawable(-00000);popupWindow.setBackgroundDrawable(dw);
0 0
- Android PopupWindow背景半透明兼容方案
- Android PopupWindow背景半透明兼容方案
- Android PopupWindow背景半透明兼容方案
- Android中为PopupWindow设置半透明背景的方案(兼容华为手机)
- android圆角 背景半透明popupWindow
- android中popupwindow屏幕背景半透明
- Android弹出popupWindow 背景变暗(背景半透明)(两种写法)
- android中popupwindow弹出后,屏幕背景变成半透明
- android中popupwindow弹出后,屏幕背景变成半透明
- android中popupwindow弹出后,屏幕背景变成半透明
- android中popupwindow弹出后,屏幕背景变成半透明
- Android PopupWindow 弹窗背景半透明,设置最大高度
- android中popupwindow弹出后,屏幕背景变成半透明
- android中popupwindow弹出后,屏幕背景变成半透明
- popupwindow 底部弹出+背景半透明
- 背景半透明CSS兼容设置
- popupwindow弹出后,屏幕背景变成半透明
- 实现popupwindow弹出后背景办成半透明
- 关于我及新年计划
- 运维进阶
- 26.图文混排
- Hibernate 一对多连接表单向关联
- 程序或-内存区域分配(五个段)
- Android PopupWindow背景半透明兼容方案
- Java无需解压直接读取Zip文件和文件内容
- 微信小程序开发(二):获取微信小程序页面带参二维码全流程
- Hibernate 多对一外键单向关联
- 手把手教你写一个归并排序
- JAVA(2017-02-08)
- 百度地图定位6.0动态权限问题
- springboot(八):RabbitMQ详解
- android 禁掉唤醒锁acquire()