首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

实践 | 为 Trackr app 适配大屏幕设备

导航 调整前 : 任务 (Tasks) 界面,您可以底部应用栏菜单中找到归档 (Archive) 和设置 (Settings) 选项。...调整后: 当屏幕变宽时,我们显示导航轨道 (navigation rail) 来取代底部应用栏。我们也悬浮操作按钮 (用于打开新建任务界面) 放到导航轨道中,从而完全移除底部应用栏。...△ 在大屏幕上导航轨道 虽然是考虑到较大屏幕设备而进行此项更改,但由于腾出了更多纵向空间来显示任务列表,横向模式显示手机也能够因此受益。...△ 悬浮编辑组件关注点放在用户当前目标内容上 起初我们尝试编辑任务界面取代任务详细信息 (Task Detail) 显示在详细信息窗格中。...相比之下,DialogFragment 吸引了用户,让关注点处于前面和中间。 在用户保存自己改动或是我们确认用户修改可以取消之前,我们不希望编辑任务 (或者新建任务) 界面导航到其他地方。

1.7K20

解决Android中自定义DialogFragment解决宽度和高度问题

关于详解Android应用中DialogFragment基本用法,大家可以参考下。 1、 概述 DialogFragment在android 3.0时被引入。...2、 好处与用法 使用DialogFragment来管理对话框,当旋转屏幕和按下后退键时可以更好管理其声明周期,它和Fragment有着基本一致声明周期。...且DialogFragment也允许开发者把Dialog作为内嵌组件进行重用,类似Fragment(可以在大屏幕和小屏幕显示出不同效果)。...高度固定,那么我们需要设置DialogFragment高度,在FragmentonResume()声明周期方法中设置window宽高即可。...,并且弹出动画为向上滑出,消失动画为向下滑出 WindowManager.LayoutParams params = getDialog().getWindow() .getAttributes

4.2K20
您找到你想要的搜索结果了吗?
是的
没有找到

三句代码创建全屏Dialog或者DialogFragment:带你源码角度实现全屏Dialog

如果Dialog定义成全屏就会省去很多问题,可以完全按照常用布局方式来处理。...不让显示Title部分,关键点2就是常用setContentView,关键点3根4就是为了全屏对话框做修改,关键点4必须要放在setContent后面,因为如果放在setContent该属性会被冲掉无效...其实View真正显示点是在Activity resume时候,让WMS添加View,其实是这里调用WindowManagerGlobaladdView,这里有个很关键布局参数params,其实传就是...,会将这里边距考虑进去,而且对于windowIsFloating = falseWindow,会将状态栏及底部导航栏考虑进去(这里不分析)。...21526023112_.pic.jpg 作者:看书小蜗牛 原文链接: 三句代码创建全屏Dialog或者DialogFragment:带你源码角度实现 仅供参考,欢迎指正

3.2K40

Jetpack:新一代导航管理Navigation

,可以手动添加action标签,当然也可以通过拖拽来实现,如下: 这样我们就添加了一个FirstFragment导航到SecondFragment动作,我们再添加一个逆向动作,最终代码如下:...注意app:defaultNavHost="true",设置为true后表示这个NavHostFragment设置为默认导航宿主,这样就会拦截系统返回按钮事件。...动作,这个是我们之前在导航视图中配置好,会导航到SecondFragment。...setupActionBarWithNavController(navController, appBarConfiguration) 上面我们提到,如果Navigation与ToolBar连接,标题栏会自动显示导航视图中设定好...除了这个,我们还可以发现当在切换页面的时候,标题栏返回按钮也会自动显示和隐藏。当导航到第二个页面SecondFragment,返回按钮显示;当回退到首页时,返回按钮隐藏。

84220

Android 撸起袖子,自己封装 DialogFragment

内容之上显示一个静态对话框。...1、DialogFragment 优点 其实在 Android 中显示对话框有两种类型可供使用,一种是 DialogFragment,而另一种则是 Dialog。...在 DialogFragment 产生之前,我们创建对话框一般采用 Dialog,而且代码编写角度来看,Dialog 使用起来其实更加简单,但是 Google 却是推荐尽量使用 DialogFragment...基本一样生命周期,使用 DialogFragment 来管理对话框,当旋转屏幕和按下后退键时候可以更好管理其生命周期 在手机配置变化导致 Activity 需要重新创建时,例如旋转屏幕,基于 DialogFragment...,一个 ProgressDialog 传进去,然后依次传入 cancelable 和 cancelListener,最后调用 show() 函数,DialogFragment 显示出来,因为我们使用了构造函数重载

1.2K41

android推荐使用dialogFrament而不是alertDialog

DialogFragment在android 3.0时被引入。是一种特殊Fragment,用于在Activity内容之上展示一个模态对话框。典型用于:展示警告框,输入框,确认框等等。...且DialogFragment也允许开发者把Dialog作为内嵌组件进行重用,类似Fragment(可以在大屏幕和小屏幕显示出不同效果)。...5、传递数据给Activity dialog传递数据给Activity,可以使用“fragment interface pattern”方式,下面通过一个改造上面的登录框来展示这种模式。...,如果是大屏幕则直接以对话框显示,如果是小屏幕则嵌入我们Activity布局中 这个R.bool.large_layout是我们定义资源文件: 在默认values下新建一个bools.xml <...而通过DialogFragment实现对话框则可以完全不必考虑旋转问题。

2.3K50

Android 沉浸式解析和轮子使用

是因为 Android 6.0(API 23)开始,我们可以改状态栏绘制模式,可以显示白色或浅黑色内容和图标(除了魅族手机,魅族自家有做源码更改,6.0 以下就能实现)。... Android4.4 以上版本才是真正可以设置沉浸式体验,但也仅仅是操作状态栏和导航显示与隐藏。...用户可以通过在状态栏与导航栏原来区域边缘向内滑动让系统栏重新显示。...用户滑动后, SYSTEMUIFLAGHIDENAVIGATION 和 SYSTEMUIFLAG_FULLSCREEN 就会被清除,系统栏就会重新显示并保持可见。...滑动操作并不会清空任何标签,也不会触发系统 UI 可见性监听器,因为暂时显示导航栏并不被认为是一种可见状态。

3.2K10

解决Android开发中痛点问题用Kotlin Flow

kotlin 1.4.0正式版发布时推出了StateFlow和SharedFlow,两者拥有Channel很多特性,可以看作是Flow推向台前,Channel雪藏幕后一手重要操作。...然后开启灵魂三问: 在生命周期组件中消费Channel是否会内存泄漏? 不会,因为Channel并不会持有生命周期组件引用,并不像LiveData传入Observer式使用。 是否支持线程切换?...发现问题 DialogFragment和Activity通信 我们通常使用DialogFragment来实现弹窗,在其宿主Activity中设置弹窗点击事件时,如果回调函数中引用了Activity对象...状态、事件架构层面上就明确划分,便于约束开发者写出漂亮代码。...比直接使用协程更简单地基于回调api改写成像同步代码一样调用 使用callbackFlow,异步操作结果以同步挂起形式发射出去。

3.1K20

引入Fragment原来是这么回事

Fragment简化了大屏幕UI设计,它不需要开发者管理组件包含关系复杂变化,开发者使用Fragment对 UI组件进行分组、模块化管理,就可以更方便地在运行过程中动态更新 Activity用户界面...其中 ActivityA仅包含显示文章列表Fragment A,而当用户选择一篇文章时,它会启动包含新闻内容Activity B,如上图所示右边手机部分。...概括起来,使用Fragment有以下一些好处: Fragment可以Activity分离成多个可重用组件,每个都有它自己生命周期和UI。...● DialogFragment 显示一个浮动对话框。使用这个类创建对话框是替代Activity创建对话框最佳选择。...为了控制Fragment显示组件,通常需要重写onCreateView()方法,该方法返回View 将作为该Fragment显示View组件,当Fragment绘制界面组件时将会回调该方法。

1K50

Android底部弹窗实现示例代码

实现底部弹窗 利用dialogFragment实现底部弹窗 实现底部弹窗方式 由于本人水平有限,只知道一下几种实现底部弹窗方式 利用PopupWindow实现底部弹窗。...利用DialogFragment实现底部弹窗。 下面,就利用以上三种方式分别实现Android中底部弹窗。...下面看下利用PopupWindow实现底部弹窗代码,重要方法我会具体讲解 private void initPopupWindow() { //要在布局中显示布局 contentView...由于,我们要将mPopWindow放在整个屏幕最低部,所以我们R.layout.activity_main做为它父容器,将其显示在BOTTOM位置。...screenWidth : screenHeight;//适配手机横屏 getWindow().setAttributes(params);//重新设置dialog属性 setCanceledOnTouchOutside

4.2K31

Android 屏幕旋转 处理 AsyncTask 和 ProgressDialog 最佳方案

这样,其实给我们带来一个很大问题,DialogFragment说白了是Fragment,和当前Activity生命周期会发生绑定,我们旋转屏幕会造成Activity销毁,当然也会对DialogFragment...效果图: 4、使用Fragment来保存对象,用于恢复数据 如果重新启动你Activity需要恢复大量数据,重新建立网络连接,或者执行其他密集型操作,这样因为配置发生变化而完全重新启动可能会是一个慢用户体验...在这样情况下,当你Activity因为配置发生改变而重启,你可以通过保持一个Fragment来缓解重新启动带来负担。这个Fragment可以包含你想要保持有状态对象引用。...效果图可以看到,无论如何旋转不会重启Activity. 效果图: 6、旋转屏幕最佳实践 下面要开始今天难点了,就是处理文章开始时所说,当异步任务在执行时,进行旋转,如果解决上面的问题。...,但是丝毫不影响加载数据任务运行和加载框显示~~~~ 效果图: 可以看到我在加载时候就三心病狂旋转屏幕~~但是丝毫不影响显示效果与任务加载~~ 最后,说明一下,其实不仅是屏幕旋转需要保存数据

2.1K20

原来在Android中请求权限也可以有这么棒用户体验

当时我想法是,PermissionX只定义显示对话框,关闭对话框等必要接口,至于实现方面不做任何限制,你可以用Dialog,也可以用DialogFragment,甚至可以用PopupWindow,或者是完全自定义控件都行...DialogFragment自定义对话框时同样这几个必要方法进行实现即可。...因为在界面上其实并不需要将deniedList中权限全部显示出来,而是只显示要申请权限组名即可,这样可以让界面更精简。...我们都知道,Android 10系统开始,Google引用了深色主题功能,一个出色App在用户开启了深色主题模式之后,应该自动界面也切换成深色模式。...现在重新运行程序之后,浅色主题和深色主题下对话框效果分别如下图所示: ? ?

2.4K30

仿iOS底部弹框实现及分析

2 实现弹框: 因为后来谷歌推荐使用DialogFragment,所以我们此处弹框也是使DialogFragment。...我们就来看看到底是为什么二边有间隙,然后再来看如何自己处理: 我们知道我们View都是被包含在window里面,虽然我们自己View宽度已经设置成了match_parent,但是我们并没有对window...毕竟我们View也是被包含在DecorView里面。废话不多说,我们马上实验: ? 然后我们再看效果,果不其然: ?...3 弹框从下而上显示: 我们看过ios弹框效果,是底部从下而上升起,然后消失时候也是从上而下消失。...原来位置,增加了自身高度距离为起始点,开始移动,然后再回到原来位置。 消失动画: 只要跟上面反过来就可以了。

1.8K10

Android 录音功能直接拿去用

mStartingTimeMills,这里主要是为了记录录音时长,等到录音结束后再获取一次当前时间,然后两个时间进行相减,就能得到录音具体时长了。...在启动时还顺便开始了 mChronometer 计时显示,这是一个 Android 原生显示计时一个控件。...外部调用这个对话框时候,只需要传入一个包含录音文件信息 RecordingItem,因为包含信息比较多,所以最好将 RecordingItem 进行序列化。...,当开始播放录音时候,录音文件时长,设置进 mSeekBar 里面,播放录音同时,运行 mSeekBar,通过监听 mSeekBar 进度,刷新显示播放进度。...Android 撸起袖子,自己封装 DialogFragment 手把手教你从零开始做一个好看 APP

3K31

Android后台杀死系列之一:FragmentActivity及PhoneWindow后台杀死处理机制

FragmentActivity被后台杀死后恢复逻辑 当App被后台异常杀死后,再次点击icon,或者最近任务列表进入时候,系统会帮助恢复当时场景,重新创建Activity,对于FragmentActivity...举个栗子 我们创建一个Activity,并且在onCreate函数中新建并show一个DialogFragment,之后通过某种方式APP异常杀死(RogueKiller模拟后台杀死工具),再次最近任务唤起...App时候,会发现显示了两个DialogFragment,代码如下: public class DialogFragmentActivity extends AppCompatActivity {...,在异常杀死情况下onCreate(Bundle savedInstanceState)函数savedInstanceState参数也不是null,而是包含了被杀死时所保存场景信息。...为什么出现两个DialogFragment Fragment在被创建之后,如果不通过add或者replace添加到Activity布局中是不会显示,在保存现场时候,也是保存了add这个状态,来看一下

2.9K30

项目需求讨论-仿ios底部弹框实现及分析

---- 实现弹框: 因为后来谷歌推荐使用DialogFragment,所以我们此处弹框也是使用DialogFragment。...我们就来看看到底是为什么二边有间隙,然后再来看如何自己处理: 我们知道我们View都是被包含在window里面,虽然我们自己View宽度已经设置成了match_parent,但是我们并没有对window...毕竟我们View也是被包含在DecorView里面。废话不多说,我们马上实验: decorView.setPadding(0,0,0,0);复制代码 然后我们再看效果,果不其然: ?...---- 弹框从下而上显示: 我们看过ios弹框效果,是底部从下而上升起,然后消失时候也是从上而下消失。...而我们只需要我们弹框显示位置,让起始位置如下图所示: ? ?

1.1K30

Android开发笔记(六十七)嵌入页面的碎片

Fragment 概念 Android3.0之后引入了Fragment,可以把它理解为页面的一个片段,比如一个html网页就包含一个header头部片段,以及一个body身体片段。...设计Fragment目的是让页面布局更加灵活,不但可以随意组装和拼接各个片段,还可以只更新某个片段实现页面局部更新功能(这个类似网页ajax技术)。...比如广告、地图等组件; 3、同一套代码可适配不同尺寸屏幕,比如说同时适配竖屏与横屏,同时适配手机与平板等等; 动态注册 Fragment有两种使用方式,一种是动态注册,另一种是静态注册。...导致状态丢失情况有很多,其中一种是早期Android可能在onStop之前就会结束Activity,后来3.0开始只能在onStop之后才能结束Activity,这样早期Android如果在omPause...Fragment子类 Android还给Fragment设计了几个子类,分别用在某些特殊场合,具体说明如下: DialogFragment : 用于对话框碎片。

1.3K60

一分钟实现Android遮罩引导视图

GuideView是一种基于DialogFragment实现引导遮罩浮层视图轻量级解决方案,它具备以下特性: 响应导航按钮动作(因为引导浮层本质是一个dialog); 链式引导层,支持设定一组引导遮罩视图...在GuideView内部通过这个配置项去构造GuideView实例,并通过GuideViewFragment显示在界面上。...其中属性都通过构造器模式,通过静态内部类Builder进行构建,属性说明如下: targetView 引导视图需要显示附着目标视图 hintView 引导视图(不包含半透明浮层以及透明焦点区) transparentSpaceXXX...相对于目标视图(targetView)边距 hasTransparentLayer 是否显示透明焦点区域,默认显示。...,对外部业务完全透明无感知到一个类 GuideViewFragment 实际显示引导视图弹窗。

1.8K10
领券