安卓开发

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

2017-04-06  本文已影响1073人  人海中一只羊

项目中要实现一个透明的全屏自定义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 即可.

上一篇 下一篇

猜你喜欢

热点阅读