DialogFragment隐藏导航栏 在 Android 中,使用 DialogFragment 显示对话框时,如果您希望隐藏系统导航栏(如状态栏和导航键),可以通过设置相关的系统 UI 标志来实现。...这需要在 DialogFragment 的视图创建和显示过程中配置窗口属性。...-- Your layout content goes here --> 使用 DialogFragment 要显示这个 DialogFragment,可以在活动或其他片段中调用以下代码...这种方法允许您的 DialogFragment 在显示时全屏,并隐藏状态栏和导航栏。...在创建 Dialog 时,可以使用 Window 类提供的一些标志来隐藏导航栏。
在项目开发中,有时候需要仿照ios的底部弹框做效果 作者博客 http://www.jianshu.com/u/5aad180d1ea8 文章目录 弹框布局 实现弹框 弹框从下而上显示 弹框的点击事件...2 实现弹框: 因为后来谷歌推荐使用的DialogFragment,所以我们此处弹框也是使DialogFragment。...所以消失的时候我们不能单纯的让DialogFragment执行dismiss(),而是先让弹框执行下移的动画效果,然后再dismiss()。...之所以我们以前用的只传了四个参数,是因为他给我们把另外四个参数以及赋了默认值,也就是ABSOLUTE。我们继续看有哪几种可以选择: ?...消失动画: 只要跟上面反过来就可以了。同时这里我们要额外增加监听动画结束事件,因为我们让弹框往下移动结束后,要让这个弹框dismiss掉: ? 所以我们的动画的代码总结下就是: ?
本文的主要内容 DialogFragment 是什么 创建通用的 CommonDialogFragment 实现各种类型的 DialogFragment 在写正文之前,先来一波效果展示吧 ?...DialogFragmentDemos.gif 一、DialogFragment 是什么 DialogFragment 在 Android 3.0 时被引入,是一种特殊的 Fragment,用于在 Activity...在 DialogFragment 产生之前,我们创建对话框一般采用 Dialog,而且从代码的编写角度来看,Dialog 使用起来其实更加简单,但是 Google 却是推荐尽量使用 DialogFragment...基本一样的生命周期,使用 DialogFragment 来管理对话框,当旋转屏幕和按下后退键的时候可以更好的管理其生命周期 在手机配置变化导致 Activity 需要重新创建时,例如旋转屏幕,基于 DialogFragment...AlertDialog 的交互,Helper 会帮助我们用 DialogFragment 来进行显示,这样既能统一整个应用的 Dialog 风格,又能让我们实现各种各样的对话框变得相当的简单 在实现
hi,在项目开发中,有时候需要仿照ios的底部弹框做效果,比如我们在iPhone上面关闭定位的时候,就会弹出ios特有的底部弹框: ?...---- 实现弹框: 因为后来谷歌推荐使用的是DialogFragment,所以我们此处弹框也是使用DialogFragment。...---- 弹框从下而上显示: 我们看过ios的弹框效果,是从底部从下而上升起,然后消失的时候也是从上而下消失。...所以消失的时候我们不能单纯的让DialogFragment执行dismiss(),而是先让弹框执行下移的动画效果,然后再dismiss()。...而我们只需要我们的弹框显示的位置,让的起始位置如下图所示: ? ?
DialogFragment在android 3.0时被引入。是一种特殊的Fragment,用于在Activity的内容之上展示一个模态的对话框。典型的用于:展示警告框,输入框,确认框等等。...在DialogFragment产生之前,我们创建对话框:一般采用AlertDialog和Dialog。注:官方不推荐直接使用Dialog创建对话框。...且DialogFragment也允许开发者把Dialog作为内嵌的组件进行重用,类似Fragment(可以在大屏幕和小屏幕显示出不同的效果)。...可以看到,对话框成功创建并显示出来,不过默认对话框有个讨厌的标题,我们怎么去掉呢:可以在onCreateView中调用getDialog().requestWindowFeature(Window.FEATURE_NO_TITLE...左边为模拟器,右边为我的手机~~~~~ 7、屏幕旋转 当用户输入帐号密码时,忽然旋转了一下屏幕,帐号密码不见了~~~是不是会抓狂 传统的new AlertDialog在屏幕旋转时,第一不会保存用户输入的值
Android 3.0系统只针对平板电脑,且闭源,那时候针对手机和针对平板是两套源代码,后来Android 4.0时整合了手机和平板的源码,因此市面上很难看到Android 3.0系统。...在一次事务中,可以做多个操作,比如同时做add().remove().replace()。 commit()操作是异步的,内部通过mManager.enqueueAction()加入处理队列。...上面的方法中,只有onCreateView()在重写时不用写super方法,其他都需要。...BackStackRecord对象,该对象记录了这个事务的全部操作轨迹(这里只做了一次add操作,并且加入回退栈),随后将该对象提交到FragmentManager的执行队列中,等待执行。...Lottie实现,Lottie动画从这里找到。
Android 3.0系统只针对平板电脑,且闭源,那时候针对手机和针对平板是两套源代码,后来Android 4.0时整合了手机和平板的源码,因此市面上很难看到Android 3.0系统。...可以看到,F1被替换时,最后只调到了onDestroyView(),并没有调用onDestroy()和onDetach()。...上面这个代码的功能就是将Fragment加入Activity中,内部实现为:创建一个BackStackRecord对象,该对象记录了这个事务的全部操作轨迹(这里只做了一次add操作,并且加入回退栈),随后将该对象提交到...进度条动画我们使用Lottie实现,Lottie动画从这里找到。使用非常方便,只需要下载JSON动画文件,然后在XML中写入: ? 然后通过下面代码显示对话框: ?...懒加载 懒加载主要用于ViewPager且每页是Fragment的情况,场景为微信主界面,底部有4个tab,当滑到另一个tab时,先显示”正在加载”,过一会才会显示正常界面。
true 也就是说Activity采用了默认的 false,而Dialog的一般是True,这两者在创建...进入PhoneWindow.java中,当Window在第一次创建DecorView的时候是需要根据该属性去创建顶层布局参数的,也就是RootMeasureSpec,Window被新建的时候,WindowManager.LayoutParams...其实View真正显示的点是在Activity resume的时候,让WMS添加View,其实是这里调用WindowManagerGlobal的addView,这里有个很关键的布局参数params,其实传就是...创建沉浸式全屏Dialog 在全屏Dialog的基础上,我们可以创建沉浸式Dialog,也就是让Dialog的内容区域延展到状态栏下方,由于这里用到了fitsystemwindow,所以要牵扯DecorView...21526023112_.pic.jpg 作者:看书的小蜗牛 原文链接: 三句代码创建全屏Dialog或者DialogFragment:带你从源码角度实现 仅供参考,欢迎指正
举个栗子 我们创建一个Activity,并且在onCreate函数中新建并show一个DialogFragment,之后通过某种方式将APP异常杀死(RogueKiller模拟后台杀死工具),再次从最近的任务唤起...虽然被杀死了,但是onCreate函数在执行的时候还是只执行了一次啊,为什么会出现两个DialogFragment,这里其实就有一个DialogFragment是通过Android自身的恢复重建机制重建出来...为什么出现两个DialogFragment Fragment在被创建之后,如果不通过add或者replace添加到Activity的布局中是不会显示的,在保存现场的时候,也是保存了add的这个状态的,来看一下...,显示出来做的,这个时候,就会显示两份,其实如果,在这个时候,你再杀死一次,恢复,就会显示三分,在杀死,重启,就是四份。。。。...显示,再stop A,在stop A的时候,需要保存A的现场,因为不可见的Activity都是可能被后台杀死的,比如,在开发者选项中打开不保留活动,就会达到这种效果,在启动另一个Activity时,上一个
)方法来创建一个DialogFragment,这个方法返回的是一个Dialog,意味着我们需要创建一个AlertDialog,并返回。...DialogFragment宽高设置无效 DialogFragment在onCreate()和onCreateView()中设置布局大小无效,因为onCreate()和onCreateView()生命周期在...,而是在DialogFragment中的onDestroyView()回调时,才会对DialogFragment进行出栈操作,所以如果你如果需要在Activity中频繁的显示隐藏一个DialogFragment...,那么在dismiss时需要手动的调用dismissAllowingStateLoss()方法,并且再次show时不能用上一个DialogFragment实例。...DialogFragment并没有对Dialog的消失提供监听给调用者使用,但是我们通过源码分析得知,DialogFragment在onActivityCreate当中其实已经帮我们设置了onDismissListener
Android 3.0系统只针对平板电脑,且闭源,那时候针对手机和针对平板是两套源代码,后来Android 4.0时整合了手机和平板的源码,因此市面上很难看到Android 3.0系统。...在一次事务中,可以做多个操作,比如同时做add().remove().replace()。 commit()操作是异步的,内部通过mManager.enqueueAction()加入处理队列。...上面的方法中,只有onCreateView()在重写时不用写super方法,其他都需要。...BackStackRecord对象,该对象记录了这个事务的全部操作轨迹(这里只做了一次add操作,并且加入回退栈),随后将该对象提交到FragmentManager的执行队列中,等待执行。...懒加载 懒加载主要用于ViewPager且每页是Fragment的情况,场景为微信主界面,底部有4个tab,当滑到另一个tab时,先显示”正在加载”,过一会才会显示正常界面。
而更棒的用户体验通常又会带来更高的权限请求通过率,所以这是相当重要的一次版本更新。 那么接下来我们就看一看PermissionX 1.4.0到底带来了哪些新东西吧。...当时我的想法是,PermissionX只定义显示对话框,关闭对话框等必要的接口,至于实现方面不做任何限制,你可以用Dialog,也可以用DialogFragment,甚至可以用PopupWindow,或者是完全自定义的控件都行...DialogFragment自定义对话框时同样将这几个必要的方法进行实现即可。...不然你的PermissionX会变得非常不稳定,比如频繁在崩溃和权限事件丢失之中挣扎。 关于对DialogFragment的支持就到这里。但,这不是本文的重点。...因为在界面上其实并不需要将deniedList中的权限全部显示出来,而是只显示要申请的权限组名即可,这样可以让界面更精简。
01 概述 DialogFragment是在Android 3.0的时候被引入的, 目的是dialog也变成了碎片。DialogFragment是Fragment的子类,用于创建于用户交互的对话框。...在DialogFragment未哇哇坠地之前,我们一般用AlertDialog和Dialog来创建对话框。现在,谷歌官方不建议直接使用Dialog创建对话框。...1)创建自定义Dialog a、创建一个名为show_version_basicdialog的布局文件,是DialogFragment对应的布局文件。 ?...2)创建Alert Dialog a、继承DialogFragment,重写onCreateDialog方法 ? 该方法返回的是一个AlertDialog实例化对象。 b、显示对话框 ?...最简单、最方便的方法是利用Java的接口回调机制,在DialogFragment类中定义一个回调接口, Activity(Framgent)实现该接口。 在DialogFragment类中 ?
Fragment 概念 Android从3.0之后引入了Fragment,可以把它理解为页面的一个片段,比如一个html网页就包含一个header头部片段,以及一个body身体片段。...设计Fragment的目的是让页面布局更加灵活,不但可以随意组装和拼接各个片段,还可以只更新某个片段实现页面局部更新的功能(这个类似网页的ajax技术)。...3、动态注册可以在构造Fragment时传入参数,而静态注册无法直接传参。...onCreateView : 创建Fragment的视图,在onCreate之后调用。...onActivityCreated : 在Activity页面创建完毕之后调用,这意味着onCreateView有可能在主页面尚未创建完毕时就完成了,比如说在主页面的onCreate方法中加入Fragment
hideSoftInputFromWindow(binding.etChat.windowToken, 0) } 复制代码 在DialogFragment显示时弹出软键盘 在DialogFragment...显示时有两种方式弹出软键盘: 1、在onViewCreated中发送一个延时任务 etChat.postDelayed({ showSoftInput() }, 200) 复制代码 注意:如果直接调用显示键盘不会起作用...复制代码 在DialogFragment消失时关闭软键盘 dialog关闭分为几种情况,处理方式不一样: 1.用户手动调用DialogFragment.dismiss() 这时可以重写dismiss方法...自定义Dialog在dismiss之前通知 DialogFragment 关闭软键盘 转变思路,既然在 DialogFragment 中无法提前监听dialog关闭,那就自定义Dialog重写dismiss...的onCreateDialog中创建自定义的Dialog,设置关闭回调。
c)谷歌的官方不建议使用ProgressDialog,这里我们会使用官方推荐的DialogFragment来创建我的加载框,如果你不了解:请看 Android 官方推荐 : DialogFragment...创建对话框。...首先说一下探索过程: 起初,我认为此时旋转无非是再启动一次线程,并不会造成异常,我只要即使的在onDestroy里面关闭上一个异步任务就可以了。...下面我们希望有一种解决方案:在加载数据时旋转屏幕,不会对加载任务进行中断,且对用户而言,等待框在加载完成之前都正常显示: 当然我们还使用Fragment进行数据保存,毕竟这是官方推荐的: OtherRetainedFragment...~~~~可以看到虽然在不断的重启,但是丝毫不影响加载数据任务的运行和加载框的显示~~~~ 效果图: 可以看到我在加载的时候就三心病狂的旋转屏幕~~但是丝毫不影响显示效果与任务的加载~~ 最后,说明一下
使用总结 做一些业务,但是目标却是用 DialogFragment 实现类似 PopupWindow 效果: 只拦截自身所占空间部分的事件,其余空间的点击事件不处理 可以根据某个 View 定位自身位置...虽然在功能上 PopupWindow 更符合需要,但是使用 DialogFragment 代码更简洁、更方便封装功能模块。...和 FLAG_TRANSLUCENT_STATUS 主要是用来调整使用沉浸式状态栏时显示自身位置不正确的问题。...获取 View 位置的时机 如果需要让 DialogFragment 在 onCreate() 等生命周期函数内直接调用显示到某个 View 的位置处,可能无法正确获取到该 View 的坐标,具体参考...但是,如果在界面显示给用户后,DialogFragment 的显示交给用户触发的话,就不需要在意这个问题了。
ProgressDialog也比较常用,在系统加载信息或者等待其他事情时,都可能需要显示ProgressDialog。...接着创建一个AlertDialog.Builder对象,在该Builder对象中嵌入布局视图,并设置标题、确定按钮、取消按钮。...要想实现一个更加完善的对话框,需要在自定义对话框时继承DialogFragment类。下面用一个简单的提示对话框进行说明,该对话框主要是显示一段文字,然后由用户选择“确定”或者“取消”。...在newInstance中创建一个实例,并传入需要的参数信息,比如标题、内容等等字段。...其次在该实例加入到activity页面时(onAttach方法),设置回调接口,并从getArguments()中取出参数信息。
设置好参数之后,启动 mRecorder 开始录音,可以看到启动 mRecorder 开始录音后,我还将当前的时间赋值给 mStartingTimeMills,这里主要是为了记录录音的时长,等到录音结束后再获取一次当前的时间...,必然离不开 DialogFragment,对于 DialogFragment 不是很了解,可以先看看我这篇文章 Android 撸起袖子,自己封装 DialogFragment。...timeWhenPaused = 0; getActivity().stopService(intent); } } 好吧,其实并没有干了什么大事,只是创建了保存录音文件的文件夹...在启动时还顺便开始了 mChronometer 的计时显示,这是一个 Android 原生的显示计时的一个控件。...的进度,刷新显示的播放进度。
4)入口和出口,在状态机做为子状态机时,会用到;在使用anystate时一般也会用到这里的出口。 2.3动画添加到状态机中 通过拖动的方式,把之前添加的动画资源拖入到状态机中 ? ?...1)你会发现拖入的第一个动画片段显示为黄色,并且有一条线从Entry连接到这个状态,这是什么捏?...系统会把第一个拖动进入的动画片段设置为默认状态,就是动画播放时的初始状态,你可以通过在各状态上右键对默认状态进行修改。...3.2设置Model部分 我们只关注以下参数即可 Scale Factor模型缩放 这里理论上都应该是1,也就是模型的原大小。...Avatar Maskavatar蒙板:在动画状态机中用于不同的层进行动画合成,控制显示或不显示动画模型的某些部分(如,我可以设计只显示手臂)。
领取专属 10元无门槛券
手把手带您无忧上云