设置popWindow背景变暗
2015-10-05 22:19
288 查看
1.//popWindow命名为window。
//首先给window设置一个背景颜色
ColorDrawable cd = new ColorDrawable(0x000000);
window.setBackgroundDrawable(cd);
// 产生背景变暗效果,设置透明度
WindowManager.LayoutParams lp = getWindow().getAttributes();
lp.alpha = 0.4f;
//之前不写这一句也是可以实现的,这次突然没效果了。网搜之后加上了这一句就好了。据说是因为popUpWindow没有getWindow()方法。
getWindow().addFlags(WindowManager.LayoutParams.FLAG_DIM_BEHIND);
getWindow().setAttributes(lp);
//这样就设置好了变暗的效果
2.//然后再设置退出popupwindow时取消暗背景
window.setOnDismissListener(new OnDismissListener() {
@Override
public void onDismiss() {
//在dismiss中恢复透明度
WindowManager.LayoutParams lp=getWindow().getAttributes();
lp.alpha=1f;
getWindow().addFlags(WindowManager.LayoutParams.FLAG_DIM_BEHIND);
getWindow().setAttributes(lp);
}
});
//这样写效率不高,代码重复。优化之后:
private void darkenBackgroud(Float bgcolor) {
WindowManager.LayoutParams lp = getWindow().getAttributes();
lp.alpha = bgcolor;
getWindow().addFlags(WindowManager.LayoutParams.FLAG_DIM_BEHIND);
getWindow().setAttributes(lp);
}
调用时:
1.使变暗:darkenBackgroud(0.4f);
2.使恢复:darkenBackgroud(1f);
//首先给window设置一个背景颜色
ColorDrawable cd = new ColorDrawable(0x000000);
window.setBackgroundDrawable(cd);
// 产生背景变暗效果,设置透明度
WindowManager.LayoutParams lp = getWindow().getAttributes();
lp.alpha = 0.4f;
//之前不写这一句也是可以实现的,这次突然没效果了。网搜之后加上了这一句就好了。据说是因为popUpWindow没有getWindow()方法。
getWindow().addFlags(WindowManager.LayoutParams.FLAG_DIM_BEHIND);
getWindow().setAttributes(lp);
//这样就设置好了变暗的效果
2.//然后再设置退出popupwindow时取消暗背景
window.setOnDismissListener(new OnDismissListener() {
@Override
public void onDismiss() {
//在dismiss中恢复透明度
WindowManager.LayoutParams lp=getWindow().getAttributes();
lp.alpha=1f;
getWindow().addFlags(WindowManager.LayoutParams.FLAG_DIM_BEHIND);
getWindow().setAttributes(lp);
}
});
//这样写效率不高,代码重复。优化之后:
private void darkenBackgroud(Float bgcolor) {
WindowManager.LayoutParams lp = getWindow().getAttributes();
lp.alpha = bgcolor;
getWindow().addFlags(WindowManager.LayoutParams.FLAG_DIM_BEHIND);
getWindow().setAttributes(lp);
}
调用时:
1.使变暗:darkenBackgroud(0.4f);
2.使恢复:darkenBackgroud(1f);
相关文章推荐
- AOP术语
- 【PostgreSQL学习之旅】第一篇:Linux和Windows下安装PostgreSQL9.4
- 必 备 习 题 集 ( 六 )
- linux epoll模型
- dispatch_once 写出 High Big Top 的单例类
- nginx+gunicorn+bottle
- test命令在shell脚本中的应用
- 必 备 习 题 集 (五)
- Ubuntu添加用户和删除
- 【Linux 移植 】——4、移植 u-boot-2012.04.01 之 支持NAND启动
- IM6Q yocto平台 uboot v2014.04_3.14.28_1.0.0_ga编译和调试
- HA高可用方案之heartbeat v1的安装配置
- linux下并行运行脚本与让程序可靠运行
- [C++] Pen questions & linux cmd
- POJ 3573 I18n (字符串乱搞)Northeastern Europe 2007
- win8.1上wamp环境中利用apache自带ab压力测试工具使用超简单讲解
- 【2015/10/3】Linux学习日志_Day5 SSH 压缩解压 repo文件 自制yum源
- 程序猿常去的网站
- linux PHP 编译参数详解
- uva 10801 - Lift Hopping