自定义Dialog之旅程(一)初试

简介: 看到美图上一些dialog华丽丽的效果之后,我也想装装逼,但是自定义dialog的文章不是很多,所以我也只能以一种摸索的形式来写这篇文章。首先看了网上写的几篇,在继承了dialog之后就重写了onCreate方法,于是这里我们需要先抛出一个问题dia...

看到美图上一些dialog华丽丽的效果之后,我也想装装逼,但是自定义dialog的文章不是很多,所以我也只能以一种摸索的形式来写这篇文章。
首先看了网上写的几篇,在继承了dialog之后就重写了onCreate方法,于是这里我们需要先抛出一个问题
dialog的生命周期是怎样的?知道这个东西的生命周期的话,对这个组件的使用就得心应手了,先把这个问题留到后面
我们写照着别人的来重写onCreate方法

img_31da018b4dbf3569864a0992d244c219.png
Paste_Image.png
img_8a4e7219ce9ee28ecba348bfeaf564f8.png
Paste_Image.png

第二句是我封装的类,不用管它,这里就一句setContentView()方法。
结果效果是这样的。

img_68b8b890616daeda663e5e7779e6645c.png
Paste_Image.png

我的父布局是设置满屏的,而且现在点旁边也不会消失。

从这步操作中我们可以看出两个重点:
1、dialog本身设置布局与窗口之间存在一定距离
2、默认情况下布局会显示白色

二、既然布局是白色,太丑了,我们设置成布局背景透明色看看是什么效果

img_8b9f97f647405726cd4551db3e22bde5.png
Paste_Image.png

图不贴了,就是上面那张,发现设置父布局的背景并没有什么卵用

那就换个方法,按照网上的做法贴上这句

       getWindow().setBackgroundDrawableResource(android.R.color.transparent);   
img_1efb8dcffa372f7e62d37f1e732d80fa.png
Paste_Image.png

发现确实有效果,这一步说明了两点:
1、把空白变透明没必要像一些网上说的设置主题
2、设置父布局背景透明没用,要设置窗口透明才行

三、结束
其实说到这里就可以结束了,因为美团的效果已经出来了
,图中两个控件都是imageview,你只要换个好看的图,然后给按钮设置点击事件,好,大功告成。

四、开个玩笑,结束这么快我还写毛啊
虽然上面能实现我们想要的结果,但是点击附近时,弹框并不会消失,如果我们想要做点击旁边弹框消失的效果呢。

先按照别人的做法

img_375dc17af352e50231e1bab377c3f1f1.png
Paste_Image.png

dismiss()就是消失,用过dialog的知道,但是按照这样的做法会出现一个效果,不管点击哪里都会消失。
其实这里应该是可以设置的,onTouchEvent是事件分发。

但是这样做就太麻烦了,换一种做法
textDialog.setCanceledOnTouchOutside(true);
发现这样子并没有用

好吧,目前没找到办法,要下班了,这个问题留到后面说。其实不实现点击周围消失的效果也行,因为这个地方本来就有一个叉的按钮让你点击,所以没必要再设置点击周围消失。

其实发现设置 setFinishOnTouchOutside(true);是可以消失的,只是看第一步,点外围会消失,但是点之前是空白的那个地方就不会消失。

目录
相关文章
|
2月前
|
缓存 前端开发 Android开发
安卓开发中的自定义视图:从零到英雄
【10月更文挑战第42天】 在安卓的世界里,自定义视图是一块画布,让开发者能够绘制出独一无二的界面体验。本文将带你走进自定义视图的大门,通过深入浅出的方式,让你从零基础到能够独立设计并实现复杂的自定义组件。我们将探索自定义视图的核心概念、实现步骤,以及如何优化你的视图以提高性能和兼容性。准备好了吗?让我们开始这段创造性的旅程吧!
31 1
|
5月前
|
开发者 前端开发 编解码
Vaadin解锁移动适配新境界:一招制胜,让你的应用征服所有屏幕!
【8月更文挑战第31天】在移动互联网时代,跨平台应用开发备受青睐。作为一款基于Java的Web应用框架,Vaadin凭借其组件化设计和强大的服务器端渲染能力,助力开发者轻松构建多设备适应的Web应用。本文探讨Vaadin与移动设备的适配策略,包括响应式布局、CSS媒体查询、TouchKit插件及服务器端优化,帮助开发者打造美观且实用的移动端体验。通过这些工具和策略的应用,可有效应对屏幕尺寸、分辨率及操作系统的多样性挑战,满足广大移动用户的使用需求。
75 0
|
5月前
|
UED 开发者 Java
触摸未来:Vaadin UI设计原则如何引领你打造触动人心的数字体验
【8月更文挑战第31天】Vaadin UI设计原则致力于提升Web应用的用户体验,其核心理念包括简洁性、一致性、直观性和可访问性。通过简化界面、统一设计风格、增强直观操作及优化无障碍访问,开发者能构建出高效且吸引人的应用。本文详细介绍每个原则,并提供实用的Java代码示例,帮助开发者在Vaadin平台上实现卓越的用户体验,提升用户满意度与应用成功率。
68 0
|
8月前
|
Java
普通玩家也能掌握的Java游戏加点系统,专业到让你无敌!
普通玩家也能掌握的Java游戏加点系统,专业到让你无敌!
54 1
|
编解码 机器人 程序员
程序员的炫酷动态科幻桌面壁纸
程序员的炫酷动态科幻桌面壁纸
532 0
|
JSON 小程序 API
小程序开发-第三章第二节下拉刷新,上拉加载-全栈工程师之路-中级篇
小程序开发-第三章第二节下拉刷新,上拉加载-全栈工程师之路-中级篇
135 0
小程序开发-第三章第二节下拉刷新,上拉加载-全栈工程师之路-中级篇
|
编解码 自然语言处理 数据可视化
iOS开发-自动布局篇:史上最牛的自动布局教学!
本文我们将提到: aotulayout(手码) VFL aotulayout(Xib) Masonry(第三方框架)
iOS开发-自动布局篇:史上最牛的自动布局教学!
|
JSON Java Android开发
Android性能优化来龙去脉总结
更多Android高级架构进阶视频免费学习:Android高级架构进阶视频免费分享学习网址以下是本人在工作中对经历过的性能优化的一些总结,依据故事的发展路线,将其分为了5个部分,分别是:常见的性能问题;产生性能问题的一些可能原因;解决性能问题的套路;代码建议及潜在性能问题排查项。
|
JSON Java Android开发
[转载]Android性能优化来龙去脉总结
转载来自这里 以下是本人在工作中对经历过的性能优化的一些总结,依据故事的发展路线,将其分为了5个部分,分别是:常见的性能问题;产生性能问题的一些可能原因;解决性能问题的套路;代码建议及潜在性能问题排查项。
1187 0

热门文章

最新文章