只需要在Manifest中需要透明的Activity内设置theme为以上任意一个就可以了
2.在Activity的layout.xml文件中,设置父布局背景透明度(不设置背景色默认全透明),不设置透明度看不出效果,如果子控件设置了背景色且不透明,则子控件所占位置无透明效果。
3.效果图
1.使用自定义的Theme
2.在res-values-styles.xml中添加MyTransparent
3.在res-values-colors.xml中添加透明颜色值
4.以上步骤设置完成和方法一有同样的效果,省去了在layout.xml设置透明背景色(如果在布局中页设置了背景色,将以布局中的为准)。方法二相对灵活一点,可以多设置一些属性,如模糊背景:
刘海屏幕
对于华为20pro,在设置-->显示-->更多显示设置-->选择 默认(为应用自动匹配顶部显示,尽可能地利用屏幕空间,使内容不被遮挡)
或者选择 隐藏顶部区域(屏幕顶部始终不作为显示区域,会导致竖屏进入刘海区域,横屏不进入刘海区域)
activity隐藏底部虚拟导航(比如华为):
在onResume和onWindowFocusChanged中写入:
dialog:d窗,在有底部虚拟导航按钮(在全屏模式中,比如华为:闪烁问题)。
处理办法重写dialog的show方法:
如果只设置
会发现在刘海屏手机上有一段灰白色区域(action_model_bar-stub:ViewStubComat)位置, xml自己的布局会往下挤一段距离高度。
如果设置上了则该位置为(0,0,0,0),实现了真正意义上的全屏。
为何取名为透明?好奇怪,它的确有实际高度,设置为true了就无实际高度。
1、前提条件:(1)设置Activity的主题为透明主题
(2)d出对话框
2、问题:按Back键时,会闪烁
3、原因分析:
(1)Activity设置成了透明主题,没有了正常的退出动画
(2)Dialog依赖于Activity所在的父窗口,Activity透明不再做退出动画,而Dialog需要做退出动画,造成了闪烁。
4、解决方案:
提升Dialog的窗口层级,设置为系统级别的悬浮窗。
需要加入权限
参考博客:
http://blog.csdn.net/tscyds/article/details/51340463
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)