项目中要实现一个透明的全屏自定义Dialog,类似与下图中进度条的背景效果.
在网上找了一些方法,现在总结下实现这种效果的最简单方法:
实现透明效果
要点一: 设置 windowBackground
<item name="android:windowBackground">@android:color/transparent</item>
实现dialog透明效果最关键的方法就是在自定义style中定义 windowBackground 为 transparent . 在自定义布局中设置布局的 background 或者 在style中 定义其他item都 起不到 使window透明的效果.
要点二: Dialog的style继承的parent
Theme.DeviceDefault.Dialog
style继承某些父样式会覆盖掉透明背景的效果,经过我自己的测试,继承上面这种样式可以保证透明效果正常出现,继承其它一些样式会出现黑色的不透明背景.
使Window全屏
Window mWindow = mDialog.getWindow();
WindowManager.LayoutParams params = mWindow.getAtrribute();
params.width = LayoutParams.MATCH_PARENT;
params.height=LayoutParams.MATCH_PARENT;
mWindow.setAttributes(params);
设置dialog全屏较为简单,直接获取到dialog的window对象,并将window对象的layoutParams的宽度和高度均设置为 match_parent 即可.
- 很简单的效果,用到的原理也很简单,总结下来方便下次使用的时候进行查找.