大发PK10APP下载_大发PK10APP官网 - 大发PK10APP下载,大发PK10APP官网是新浪网最重要的频道之一,24小时滚动报道国内、国际及社会新闻。每日编发新闻数以万计。

Android基于DialogFragment封装一个通用的Dialog

  • 时间:
  • 浏览:0

引用:

【1】https://developer.android.com/reference/android/app/DialogFragment

【2】https://blog.csdn.net/lmj623565791/article/details/37815413

Dialog是项目中最常用的这样 功能之一了,接手项目的事先发现项目中是封装了这样 dialog的,而且发现是用单例封装的,大致如下:

DialogWrapper 来包装一层Dialog,方便后续加进数据信息。SYDialogsManager通过单例来实现,确保只能这样 实例,外部有这样 容器队列ConcurrentLinkedQueue来保存多个DialogrequestShow()法律法律依据中首先会判断当前与算不算正在显示的弹窗,是原因有,则在队列中等待时间,而且从队列中取出并展示,并在队列中清空该数据,当这样 Dialog展示完毕,会继续尝试在队列中取出Dialog并展示,直到队列是空为止。

用这样 UML图大致来表示一下类之间的关系:



gif图比较模糊,直接扫二维码下载APK吧!

效果图:

效果图:

可是我原因也找到了,每次在B的onCreate()顶端刚调用了show(),紧接着又调用了A的onStop()中的dismiss()给关掉了,用单例法律法律依据显然不太最少。趁着版本大改版,花了点时间重新撸了这样 。根据大伙儿的项目时需,调研了下,最少时需符合以下场景:

1、无需提供布局,内置项目中常用默认的样式

2、 支持自定义冗杂的布局、动画、对话框大小、背景色等设置

3、统一管理多个dialog并顺序弹出

第其他:大每项情形下,使用对话框的样式时需一致的,可是我内置了默认的dialog样式,还时需除理调用方每次再去找布局文件,尽是原因的冗杂调用。ps:内置dialog样式还时需根据需求自行修改。

第二点:是原因时需自定义冗杂的布局,时需支持布局子View的创建及一系列交互事件。

第三点: 项目暗含个需求,是原因一次会产生多个dialog,时需依次弹出dialog

代码中注释是原因很完正了,是原因是自定义布局而且时需除理交互事件,还时需通过设置setBuildChildListener 并实现其回调,并在回调接口中创建子View并除理交互事件,使用起来还是很方便的。

上述例子源码:https://github.com/crazyqiang/AndroidStudy

基于以上需求点,使用DialogFragment封装了这样 通用Dialog——SYDialog,先看最终效果图

使用单例除了是原因会有内存泄漏什么的大问题,在使用过程中还发现这样 什么的大问题:不同页面的dialog还时需相互影响,想想也对,是原因全局只能这样 dialog嘛,项目暗含这样 场景:A页面跳B页面,一进B页面的onCreate()时时需弹这样 dialog,发现每次都弹找不到来,debug发现另这样 在A页面的onStop()法律法律依据里调用了dismiss()法律法律依据,A页面跳B页面生命周期走的是:

DialogFragment继承自Fragment,即还时需用Fragment来展示Dialog,相比于用AlertDialog是原因DialogDialogFragment 更有优势: