Android之Dialog半透明背景消失

近日,遇到一个Dialog半透明背景消失的问题,背景需求是自定义Dialog实现警告提示框:

// 初始化警告弹出框
alertDialog = new EmpAlertView(context, Utils.getIdByName(context, "style", "alert_style"));
alertDialog.setCanceledOnTouchOutside(false);
LayoutInflater inflater = (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
layout = inflater.inflate(Utils.getIdByName(context, "layout", "alertview"), null);
layout.setLayoutParams(new LayoutParams(LayoutParams.MATCH_PARENT, LayoutParams.WRAP_CONTENT));
// 设置半透明背景
Window window = alertDialog.getWindow();
WindowManager.LayoutParams lp = window.getAttributes();
lp.alpha = 0.9f;
window.setAttributes(lp);

alertDialog.setContentView(layout);

进行页面操作及用户提示,一切显示正常,如图:

当按下屏幕电源按钮,再次点亮屏幕,发现Dialog半透明的灰暗背景消失了.....

解决方法:设置window.addFlags(WindowManager.LayoutParams.FLAG_SHOW_WHEN_LOCKED);修改后如下:

// 初始化警告弹出框
alertDialog = new EmpAlertView(context, Utils.getIdByName(context, "style", "alert_style"));
alertDialog.setCanceledOnTouchOutside(false);
LayoutInflater inflater = (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
layout = inflater.inflate(Utils.getIdByName(context, "layout", "alertview"), null);
layout.setLayoutParams(new LayoutParams(LayoutParams.MATCH_PARENT, LayoutParams.WRAP_CONTENT));

Window window = alertDialog.getWindow();
WindowManager.LayoutParams lp = window.getAttributes();
lp.alpha = 0.9f;
window.setAttributes(lp);
// 防止按下再重新开启屏幕电源,原先变暗的背景变白色
window.addFlags(WindowManager.LayoutParams.FLAG_SHOW_WHEN_LOCKED);

alertDialog.setContentView(layout);
时间: 2024-08-27 13:30:16

Android之Dialog半透明背景消失的相关文章

android之Dialog自定义引发的血案

我仍然从实际工作中出发!最近需要在照相机里面添加声控拍照功能(语音拍照),在设置当中需要实现如下图的效果: 其设置的"语音拍照"菜单功能描述如下: (1)当点击""语音拍照"菜单时候就会弹出如上图所示的Dialog, 点击Dialog里面的"拍照"/"茄子"就会自动播放声音. (2)Dialog出现时候,只要点击Dialog以外的区域,Dialog就会自动消失. (3)当点击"语音拍照"菜单最右边

Android之Dialog分析

Android之Dialog分析 以Dialog为引导,Android的弹出式消息一共是三种(据我所知):Dialog,tocast,notification 其三种弹出式消息各有所长.今天重点是分析其中的Dialog.Android的Dialog是android界面编程的重点.当然android被称之为"页程序"就更体现页面编程,UI线程了解的重要性了. 本文的目录结构: 1.Android中的几种Dialog 2.Dialog的创建方式 3.Android的警告对话框AlertDi

【Android】Dialog从下往上弹起(Dialog全屏,模态显示)

public class MyDialog extends Dialog implements android.view.View.OnClickListener{ private Button cancel; Context context; View localView; private RelativeLayout clearallpan; protected MyDialog(Context context) { super(context); this.context = contex

Android Activity 悬浮 半透明边框

1.首先来创建一个Activity,在Activity的OnCreate函数里面我们设置它为全屏,然后设置Activity的宽高为全屏*0.9,然后设置背景图片为半透明的 .9 图片 .这样就已经是非全屏的窗体了 this.requestWindowFeature(Window.FEATURE_NO_TITLE); this.getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN, WindowManager.LayoutP

Android日常知识收集与总结之Android的Dialog棱角问题

使用Dialog时背景如果是一张圆角的图片,下面会有一点棱角显示在下方很别扭,现将解决办法记录下来,以便以后查找     <style name="Dialog" parent="android:style/Theme.Dialog">         <item name="android:background">#00000000</item>         <item name="and

android 自定义Dialog去除黑色边框

在自定义Dialog时显示的界面中老是有黑色的边框,下面就介绍使用style去除黑色边框方法. 首先在values/styles定义自定义样式: <style name="MyDialog" parent="@android:Theme.Dialog"> <item name="android:windowFrame">@null</item> <item name="android:windo

Android 自定义Dialog类,并在Activity中实现按钮监听。

实际开发中,经常会用到Dialog,比如退出时候会弹出是否退出,或者还有一些编辑框也会用Dialog实现,效果图如下: 开发中遇到的问题无非在于如果在Activity中监听这个Dialog中实现的按钮,Dialog类如下,在MyDialog这个类中实现了一个LeaveMyDialogListener接口,用来实现onclick的点击事件: package com.Ieasy.Tool; import com.Ieasy.ieasyware.R; import android.app.Dialog

(Android review)dialog的使用

一.基本知识点 常见的dialog 基本代码:AlertDialog.Builder builder = new AlertDialog.Builder(this);AlertDialog dialog = builder.create();dialog.show(); 1)常见对话框builder.setMessage("浏览传智播客的网站");builder.setPositiveButton 2)选择对话框builder.setItems(items, new DialogInt

探讨:你真的会用Android的Dialog吗?

一个Bug前几日出现这样一个Bug是一个RuntimeException,详细信息是这样子的: 复制代码代码如下: java.lang.IllegalArgumentException: View not attached to window manager    at android.view.WindowManagerImpl.findViewLocked(WindowManagerImpl.java:356)    at android.view.WindowManagerImpl.rem