Android中为PopupWindow设置半透明背景的方案(兼容华为手机)
来源:互联网 发布:计算机mac地址是什么 编辑:程序博客网 时间:2024/06/03 02:39
android中为PopupWindow设置半透明背景已经是老生常谈的问题了,网上一搜答案也都基本相同,最简单的就是获取窗体的属性,给其设置透明度:
/** * 设置页面的透明度 * @param bgAlpha 1表示不透明 */public static void setBackgroundAlpha(Activity activity, float bgAlpha) {WindowManager.LayoutParams lp = activity.getWindow().getAttributes();lp.alpha = bgAlpha;activity.getWindow().setAttributes(lp);}
此方法在绝大多数手机上都是有效的,但是如果你碰到的是华为手机,那么不好意思,只设置这几行代码是无效的(暂未找到原因)。其实要想兼容华为手机也很简单,只需要多加几行代码就行了:
/** * 设置页面的透明度 * @param bgAlpha 1表示不透明 */public static void setBackgroundAlpha(Activity activity, float bgAlpha) {WindowManager.LayoutParams lp = activity.getWindow().getAttributes();lp.alpha = bgAlpha;if (bgAlpha == 1) {activity.getWindow().clearFlags(WindowManager.LayoutParams.FLAG_DIM_BEHIND);//不移除该Flag的话,在有视频的页面上的视频会出现黑屏的bug} else {activity.getWindow().addFlags(WindowManager.LayoutParams.FLAG_DIM_BEHIND);//此行代码主要是解决在华为手机上半透明效果无效的bug}activity.getWindow().setAttributes(lp);}
当然,对窗体设置了透明度之后一定要记得在PopupWindow消失的时候将透明度设置回来:
<span style="white-space:pre"></span>@Overridepublic void onDismiss() {if (activity != null) {setBackgroundAlpha(activity, 1f);}}或
popupWindow.setOnDismissListener(new PopupWindow.OnDismissListener() {@Overridepublic void onDismiss() {if (activity != null) {setBackgroundAlpha(activity, 1f);}}});当然,还有其他方法可以实现半透明效果,比如,设置PopupWindow为全屏,自己添加半透明的背景等,但是针对网上说的如下设置:
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 弹窗背景半透明,设置最大高度
- 背景半透明CSS兼容设置
- android中popupwindow弹出后,屏幕背景变成半透明
- android中popupwindow弹出后,屏幕背景变成半透明
- android中popupwindow弹出后,屏幕背景变成半透明
- android中popupwindow弹出后,屏幕背景变成半透明
- android中popupwindow弹出后,屏幕背景变成半透明
- android中popupwindow弹出后,屏幕背景变成半透明
- 兼容IE、Firefox的背景半透明内容不透明设置
- 兼容IE、Firefox的背景半透明内容不透明设置
- 自己动手从网络加载,缓存,压缩图片
- 47.数组中重复的数字(快速排序)
- 好久没来了h
- android之调用电话拨打电话
- 持续学习内容
- Android中为PopupWindow设置半透明背景的方案(兼容华为手机)
- 虚拟机的MAC地址分配与修改
- 关于WMTS服务的一些总结和疑问
- hibernate核心API简介
- HDU 1086 You can Solve a Geometry Problem too
- jvm性能监控和故障处理
- 一个在线的command line for linux
- WebBench学习使用
- 使用eclipse+pydev远程调试OpenStack