自定义dialog 背景属性差异

比如正常要实现的dialog效果:

代码如此:


public class SimpleDialog extends Dialog {private Button permissionokTv;//确定按钮private Button permissionnoTv;//取消按钮private TextView permissiontitleTv;//消息标题文本private TextView permissioncontentTv;//消息提示文本public SimpleDialog(@NonNull Context context, @StyleRes int themeResId) {super(context, themeResId);}@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.simlpe_dialog);setDialogStats();setCanceledOnTouchOutside(false);setCancelable(false);//初始化界面控件initView();}/*** 设置dialog 熟悉*/private void setDialogStats() {Window window = this.getWindow();//1
//        window.setFlags(WindowManager.LayoutParams.FLAG_BLUR_BEHIND,WindowManager.LayoutParams.FLAG_BLUR_BEHIND);//(设置模糊)//2
//        window.addFlags(WindowManager.LayoutParams.FLAG_BLUR_BEHIND);//(设置暗淡)//        window.setBackgroundDrawableResource(R.color.transparent);//设置背景透明WindowManager.LayoutParams layoutParams = window.getAttributes();
//        layoutParams.alpha = 0.9f;
//        layoutParams.alpha = 1f;//设置透明度(Dialog自身的透明度)//3
//        layoutParams.dimAmount = 0.5f;//设置黑暗度(Dialog 窗口背景的黑暗度)layoutParams.width = WindowManager.LayoutParams.MATCH_PARENT;layoutParams.height = WindowManager.LayoutParams.WRAP_CONTENT;layoutParams.gravity = Gravity.CENTER;window.setAttributes(layoutParams);}/*** 初始化界面控件*/private void initView() {permissionokTv = findViewById(R.id.permissionokTv);permissionnoTv = findViewById(R.id.permissionnoTv);permissiontitleTv = (TextView) findViewById(R.id.permissiontitleTv);permissioncontentTv = (TextView) findViewById(R.id.permissioncontentTv);//设置确定按钮被点击后,向外界提供监听permissionokTv.setOnClickListener(new View.OnClickListener() {@Overridepublic void onClick(View v) {dismiss();}});//设置取消按钮被点击后,向外界提供监听permissionnoTv.setOnClickListener(new View.OnClickListener() {@Overridepublic void onClick(View v) {dismiss();}});}}

style:

<style name="DialogStyle" parent="@android:style/Theme.Dialog"><!--背景颜色及和透明程度--><item name="android:windowBackground">@android:color/transparent</item><!--是否去除标题 --><item name="android:windowNoTitle">true</item><!--是否去除边框--><item name="android:windowFrame">@null</item><!--是否浮现在activity之上--><item name="android:windowIsFloating">true</item><!--设置底层是否可见--><item name="android:windowIsTranslucent">true</item><item name="android:windowFullscreen">true</item><!--是否模糊-->
<!--        <item name="android:backgroundDimEnabled">false</item>-->
<!--        <item name="android:backgroundDimAmount">0.5</item>--><!-- android:backgroundDimEnabled,设置为true时候,整个Dialog的大背景就是半透明的黑色,如果设置为false就是全透明android:backgroundDimAmount表示暗度,0.0f完全不暗,即背景是可见的 ,1.0f时候,背景全部变黑暗    -->
</style>

布局:

<?xml version="1.0" encoding="utf-8"?>
<androidx.appcompat.widget.LinearLayoutCompat xmlns:android="http://schemas.android.com/apk/res/android"android:orientation="vertical"android:layout_width="match_parent"android:layout_height="wrap_content"><androidx.appcompat.widget.LinearLayoutCompatandroid:orientation="vertical"android:layout_width="match_parent"android:layout_marginHorizontal="30dp"android:background="@color/white"android:layout_height="wrap_content"><androidx.appcompat.widget.AppCompatTextViewandroid:id="@+id/permissiontitleTv"android:gravity="center"android:layout_width="match_parent"android:layout_height="50dp"android:text="提示标题"/><Viewandroid:layout_width="match_parent"android:layout_height="1dp"android:background="@color/cardview_shadow_start_color"/><androidx.appcompat.widget.AppCompatTextViewandroid:id="@+id/permissioncontentTv"android:gravity="center"android:layout_width="match_parent"android:layout_height="50dp"android:text="提示内容"/><Viewandroid:layout_width="match_parent"android:layout_height="1dp"android:background="@color/cardview_shadow_start_color"/><androidx.appcompat.widget.AppCompatButtonandroid:id="@+id/permissionokTv"android:gravity="center"android:layout_width="match_parent"android:layout_height="50dp"android:textColor="@color/black"android:text="ok"/><androidx.appcompat.widget.AppCompatButtonandroid:id="@+id/permissionnoTv"android:gravity="center"android:layout_width="match_parent"android:layout_height="50dp"android:textColor="@color/black"android:text="no"/></androidx.appcompat.widget.LinearLayoutCompat></androidx.appcompat.widget.LinearLayoutCompat>

属性:

SimpleDialog 代码里不做特殊设置的话,针对style文件属性:

<item name="android:windowBackground">@android:color/transparent</item>

-设置window背景透明。

不写时默认布局底层黑色背景,如左侧;设置透明色时如右侧。
 

<item name="android:backgroundDimEnabled">false</item>

-设置为true时候,整个Dialog的大背景就是半透明的黑色,如果设置为false就是全透明。

false时效果如左侧。true时如右侧。
 

<item name="android:backgroundDimAmount">0.5</item>

-表示暗度,0.0f完全不暗,即背景是可见的 ,1.0f时候,背景全部变黑暗。

0.1如左侧,0.9如右侧。

 

SimpleDialog 代码里:

layoutParams.dimAmount = 0.5f;//设置黑暗度(Dialog 窗口背景的黑暗度)

-设置黑暗度

跟style <item name="android:backgroundDimAmount">0.5</item> 效果一样。

window.setFlags(WindowManager.LayoutParams.FLAG_BLUR_BEHIND,WindowManager.LayoutParams.FLAG_BLUR_BEHIND);//(设置模糊)

or

window.addFlags(WindowManager.LayoutParams.FLAG_BLUR_BEHIND);//(设置暗淡)

也是有相应的效果


//layoutParams.alpha = 0.9f;
layoutParams.alpha = 1f;//设置透明度(Dialog自身的透明度)

-修改Dialog自身的透明度

0.5-0.9-1,分别效果:

  

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.xdnf.cn/news/1541613.html

如若内容造成侵权/违法违规/事实不符,请联系一条长河网进行投诉反馈,一经查实,立即删除!

相关文章

[OpenGL]使用OpenGL绘制带纹理三角形

一、简介 本文介绍了如何使用使用OpenGL绘制带纹理三角形。 在绘制带纹理的三角形时&#xff0c; 首先使用.h读取准备好的.png格式的图片作为纹理&#xff0c;然后在fragment shader中使用 ... in vec2 textureCoord; uniform sampler2D aTexture1; void main() {FragColor …

Elionix 电子束曝光系统

Elionix 电子束曝光系统 - 上海纳腾仪器有限公司 -

您可能一直在寻找的 10 个非常有用的前端库

文章目录 前言正文1.radash2.dayjs3.driver4.formkit/drag-and-drop5.logicflow6.ProgressBar7.tesseract8.zxcvbn9.sunshine-track10.lottie 前言 前端开发中&#xff0c;总有一些重复性的工作让我们疲于奔命。为了提高开发效率&#xff0c;我们精心挑选了10个功能强大、易于…

数据结构与算法——Java实现 7.习题——反转链表

当你穿过了暴风雨&#xff0c;你已不是原来那个人 —— 24.9.21 206. 反转链表 给你单链表的头节点 head &#xff0c;请你反转链表&#xff0c;并返回反转后的链表。 示例 1&#xff1a; 输入&#xff1a;head [1,2,3,4,5] 输出&#xff1a;[5,4,3,2,1]示例 2&#xff1a; 输…

【Stm32】从零建立一个工程

这里我们创建“STM32F103”系列的文件&#xff0c;基于“固件库” 1.固件库获取 https://www.st.com.cn/zh/embedded-software/stm32-standard-peripheral-libraries.html 2.使用Keil创建.uvprojx文件 前提是已经下载好了“芯片对应的固件” 3.复制底层驱动代码 将固件库下的…

大数据新视界 --大数据大厂之JavaScript在大数据前端展示中的精彩应用

&#x1f496;&#x1f496;&#x1f496;亲爱的朋友们&#xff0c;热烈欢迎你们来到 青云交的博客&#xff01;能与你们在此邂逅&#xff0c;我满心欢喜&#xff0c;深感无比荣幸。在这个瞬息万变的时代&#xff0c;我们每个人都在苦苦追寻一处能让心灵安然栖息的港湾。而 我的…

linux安装Anaconda3

先将Anaconda3安装包下载好&#xff0c;然后在主文件夹里新建一个文件夹&#xff0c;将Anaconda3安装包拖进去。 打开终端未来不出现缺东西的异常情况&#xff0c;我们先安装 yum install -bzip2然后进入根目录下&#xff0c;在进入Anaconda3文件夹下 sh包安装方式 sh Anac…

【二十四】【QT开发应用】ScorllArea应用3,补全ScorllArea代码以及ListWidget与ScorllArea联动的信号槽和槽函数编写

补全ScorllArea代码逻辑 我们将其他ListItem项目全部设置成和基本设置一样的代码&#xff0c;唯独不一样的就是把题头的label修改成对应的文本&#xff0c;例如基本设置&#xff0c;云盘设置等。 Widget对应一个类 每一个Widget创建对应的类&#xff0c;头文件和cpp文件&am…

为什么大多数的程序员的编程界面背景都是黑色的?

不光编程IDE软件界面是黑色&#xff0c;市场上很多软件也是黑色或灰色背景为主&#xff0c;比如PS、Pr、AutoCAD等。很多商业PPT、设计广告是黑色背景&#xff0c;这几年不少汽车品牌logo也改成单黑色。 看来黑色不光是程序员的偏爱&#xff0c;也是符合大多数人需求的颜色。 …

数字基带之相移键控PSK

1 相移键控定义 相移键控是指用载波的相移位变化来传递信号&#xff0c;不改变载波的幅度和频率&#xff0c;可用下面的公式表示。 是载波的幅度&#xff0c;是载波的角频率&#xff0c;是载波的瞬时相位&#xff0c;是载波的初始相位。如果需要调制的信号为1bit的二进制数&am…

链表(单向不带头非循环)

声明 链表题考的都是单向不带头非循环&#xff0c;所以在本专栏中只介绍这一种结构&#xff0c;实际中链表的结构非常多样&#xff0c;组合起来就有8种链表结构。 链表的实现 创建一个链表 注意&#xff1a;此处简单粗暴创建的链表只是为了初学者好上手。 public class MyS…

Spring(三)Spring事件+计划任务+条件注解+SpringAware

Application Event 事件 当一个Bean处理完一个任务之后&#xff0c;希望另一个Bean知道并做出相应的处理&#xff0c;这时需要让另外一个Bean监听当前Bean所发送的事件 自定义事件&#xff0c;集成ApplicationEvent自定义事件监听器&#xff0c;实现ApplicationListener使用容…

S-Clustr-Simple 飞机大战:骇入现实的建筑灯光游戏

项目地址:https://github.com/MartinxMax/S-Clustr/releases Video https://www.youtube.com/watch?vr3JIZY1olro 飞机大战 这是一个影子集群的游戏插件&#xff0c;可以将游戏画面映射到现实的设备&#xff0c;允许恶意控制来完成游戏。亦或者设备部署在某建筑物中,来控制…

电脑硬件-机械硬盘

简介 机械硬盘是电脑的主要存储媒介之一&#xff0c;通常用于存储一些文件资料或者学习视频笔记等比较大的内容。 结构 采用磁盘存储数据&#xff0c;使用温彻斯特的结构&#xff0c;特有四个特点&#xff1a; 1.磁头、盘片和运动机构安装在一个密封的腔体内。 2.盘片告诉旋…

AI大模型算法工程师经典面试题————为什么 Bert 的三个 Embedding 可以进行相加?

大模型算法工程师经典面试题————为什么 Bert 的三个 Embedding 可以进行相加&#xff1f; 为什么 Bert 的三个 Embedding 可以进行相加&#xff1f; Token Embedding、Segment Embedding、Position Embedding的意义我已经清楚了&#xff0c;但是这三个向量为什么可以相加…

数据中台系统产品原型RP原型Axure高保真交互原型 源文件分享

在数字化时代&#xff0c;数据已经成为企业最宝贵的资产之一。为了更好地管理和利用这些数据&#xff0c;这边为大家整理了一套数据中台Axure高保真原型。这套原型致力于为企业提供全方位的数据服务&#xff0c;助力企业实现数据驱动的创新发展。 下载及预览地址&#xff1a;h…

MATLAB智能优化算法-学习笔记(3)——大规模邻域搜索算法求解旅行商问题【过程+代码】

一、问题描述 旅行商问题(TSP, Traveling Salesman Problem)是组合优化中的经典问题之一。给定一组城市和每对城市之间的距离,要求找到一条最短的路径,使旅行商从某个城市出发,访问每个城市一次并最终回到出发点。TSP问题广泛应用于物流配送、工厂调度、芯片制造等领域。…

1、等保测评介绍

数据来源&#xff1a;等保测评基础知识学习(1.02.0)2024最新版_哔哩哔哩_bilibili 等级保护的定义&#xff1a; 对国家秘密信息、法人或其他组织及公民专有信息以及公开信息&#xff0c;按照其重要程度对信息系统实施分等级安全保护。这包括对使用的安全产品进行等级管理&…

基于协同过滤算法的商品推荐系统

系统展示 用户前台界面 管理员后台界面 商家后台界面 系统背景 随着互联网技术的飞速发展&#xff0c;用户每天面临的信息量呈爆炸式增长&#xff0c;如何有效地筛选出用户感兴趣的内容成为一大挑战。在此背景下&#xff0c;基于协同过滤算法的商品推荐系统应运而生。该系统通过…

AI Agent,将如何打破大模型的应用边界?

大语言模型的浪潮&#xff0c;推进了AlAgent落地 上个世纪50年代&#xff0c;阿兰图灵首次将"高度智能有机体"的概念提出。经过半个多世纪的发展&#xff0c;终于在2023年进入了一个新的高潮&#xff0c;并于今年进入了爆发阶段。 自2022年11月30日chatGPT发布以来…