Android中自定义全屏透明Dialog实践

项目中要实现一个透明的全屏自定义Dialog,类似与下图中进度条的背景效果.

transparentPicture.jpg

在网上找了一些方法,现在总结下实现这种效果的最简单方法:

实现透明效果

要点一: 设置 windowBackground
 <item name="android:windowBackground">@android:color/transparent</item>

实现dialog透明效果最关键的方法就是在自定义style中定义 windowBackgroundtransparent . 在自定义布局中设置布局的 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 即可.

  • 很简单的效果,用到的原理也很简单,总结下来方便下次使用的时候进行查找.
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容