欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

DialogFragment运行原理及使用方法详解

程序员文章站 2022-07-08 10:58:33
思维导图一、为什么要学习 dialogfragment你还在用 dialog 吗?你还在经常烦恼于屏幕翻转的时候,dialog 的各种奇葩情况吗?你想降低耦合吗?如果你有其中的一个烦恼,那么恭喜你,遇...

思维导图

DialogFragment运行原理及使用方法详解

一、为什么要学习 dialogfragment

你还在用 dialog 吗?你还在经常烦恼于屏幕翻转的时候,dialog 的各种奇葩情况吗?你想降低耦合吗?如果你有其中的一个烦恼,那么恭喜你,遇见了 dialogfragment ,他恰巧就解决了上面所说的问题,如果感兴趣的话,随笔者来看下吧!

二、背景

android 官方推荐使用 dialogfragment 来代替 dialog ,可以让它具有更高的可复用性(降低耦合)和更好的便利性(很好的处理屏幕翻转的情况)。而创建 dialogfragment 有两种方式:

「法一:覆写其 oncreatedialog 方法」

一般用于创建替代传统的 dialog 对话框的场景,ui 简单,功能单一,不适用于使用了多线程(例如网络请求)的情况下(因为不能正确的获取当前 fragment 的状态,会产生空指针异常)

「法二:覆写其 oncreateview 方法」

一般用于创建复杂内容弹窗或全屏展示效果的场景,ui 复杂,功能复杂,一般有网络请求等异步操作

三、应用

3.1 基本用法是什么

法一:

a.创建一个简单的 dialog 并返回它即可

DialogFragment运行原理及使用方法详解

b.你也可以使用自定义 view 来创建:

DialogFragment运行原理及使用方法详解

ps:创建 dialog 的方式有多种,比如下面这种,使用时略有差异,需要自己注意:

DialogFragment运行原理及使用方法详解

这种情况,标题内容上面的白色部分,其实是默认的标题栏,如果需要的话,可以设置隐藏标题栏(将在下文说到)

3.2 如何处理屏幕翻转

如果使用传统的 dialog ,需要我们手动处理屏幕翻转的情况,但使用 dialogfragment 的话,则不需要我们进行任何处理,fragmentmanager 会自动管理 dialogfragment 的生命周期。

3.3 如何隐藏标题栏

在基本用法里代码注释有设置主题的地方,下面详细说下两种方法下设置无标题栏的方式:法一:

法二:

3.4 如何实现全屏

常用的形式大多是宽度上和屏幕一样宽,高度自适应,下面直接看代码:

法一:

法二:

3.5 应用场景的区别是什么

文章一开始简单总结了法一 和法二的应用场景,这里说明下:

法一:为简单的替代 dialog 提供了非常方便的创建方式,但是在使用了多线程(例如网络请求)的情况下,不能正确的获取当前 fragment 的状态,会产生空指针异常法二:则没有如上空指针的问题,而且,其创建方式默认使用了自定义 view,更便于应对复杂 ui 的场景

3.6 如何与 activity 进行交互?

使用回调的方式

a.在 dialogfragment 中:

在 dialogfragment 的点击事件中:

b.在 activity 中

3.7 如何结合动画使用 a.设置从下到上弹出的动画

b.设置从上到下弹出的动画

c.封装从上到下弹出的动画

加上判断是否多次点击。防止多次执行

3.8 如何在 activity 弹出 dialogfragment ?

3.9 如何点击空白处时关闭的时候,还能使用动画?

直接对 decorview 设置 ontouchlistener

四、结语

终于看完了鸭!累死鸭了!如果还有什么不是很清楚的话,可以看下笔者写的示例 demo

https://github.com/lovelifeeveryday/testdialogfragment

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。