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

导航: 多返回栈 | MAD Skills

概述 假设您的应用使用了 BottomNavigationView。通过这个功能,当用户选择另一个标签页 (Tab) 时,当前标签页的返回栈会被保存,而所选标签页的返回栈会被恢复。...也就是说,如果您的应用使用了为 BottomNavigationView 或 NavigationView 提供的 setupWithNavController() 方法,则只需要更新依赖库版本,便可默认启用多返回栈...支持多返回栈 让我们通过这个 仓库 中的高级导航示例来看看实际效果。 该应用由 3 个标签页组成,每个标签页都有它自己的导航流。...为了在导航的早期版本中支持多返回栈,我们需要在该示例的 NavigationExtensions 文件中添加一系列辅助函数。...如果您的应用使用 BottomNavigationView 或 NavigationView,并且您一直在等待支持多返回栈,您所需要做的仅仅是更新 navigation 和 fragment 依赖库,不需要改变任何代码

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

    Android开发之漫漫长途 XIII——Fragment最佳实践

    下图是我们几乎在主流App中都能发现的一个功能。 ? 熟悉Android的朋友一定都会知道,很简单嘛,使用TabHost就OK了!...但是殊不知,TabHost并非是那么的简单,它的可扩展性非常的差,不能随意地定制Tab项显示的内容,而且运行还要依赖于ActivityGroup。...中加载布局文件,该布局文件也非常简单,仅仅定义了一个帧布局,在帧布局中包含了一个TextView <?...Fragment性能问题分析与解决 Fragment性能问题分析 我们上面是使用replace来切换页面,那么在每次切换的时候,Fragment都会重新实例化,重新加载一边数据,这样非常消耗性能和用户的数据流量...我们不能使用replace来进行页面的切换,那么可使用的方法貌似只有add了,我们可以在加载的时候判断Fragment是不是已经被添加到队列中,如果已添加,我们就显示(show)该Fragment,隐藏

    1.3K20

    再不迁移到Material Design Components 就out啦

    下面我们通过一些常见的迁移方案来了解一下这些问题 文字栏位改变 在 MDC 中,文字字段默认样式发生了改变。改进版本是经过用户调查研究的。 ? 我们建议您使用这个版本,来提高可用性和可配置项性。...下面这几种情况应该考虑 在布局中写的控件如果有对应的 MDC 控件的话,直接使用 MDC 控件 任何的风格,默认风格和默认风格属性应该改变成 MDC 版本 在编程中或者自定义类的父级类使用的任何控件都应该为...MDC窗口小部件使用这些属性来为其背景,文本,图标等着色。要了解哪些小部件使用哪种颜色,需要检查源代码中的默认小部件样式。 AppCompat和框架中还存在一些颜色,但不再适用于此新系统。...MDC小部件使用这些属性来设置文本样式。要知道哪些窗口小部件使用哪种类型板式,需要检查源代码中的默认窗口小部件样式。...用 cornerSize 来表示尺寸 ? MDC小部件使用这些属性来设置其背景样式。要了解哪些窗口小部件适用于哪些形状类别,需要检查源代码中的默认窗口小部件样式。

    3.2K30

    听说谷歌Baba更新了 Material UI ...

    来瓶哇哈哈,精神抖擞来一波~ 简单回顾 Material Design,是谷歌在14年的IO大会上提出的一种新的理念,也被称为新的设计语言(也被称为“原材料设计”),称它为设计语言不为过,但是实际上,这仅仅是谷歌提倡的一种新的设计风格...- P compileSdkVersion 'android-P' Step 3:移除项目工程中依赖的v7包以及添加material依赖 dependencies {    // 3.移除项目工程中依赖的...那下面按照步骤操作一次: Step 1:在布局中添加BottomNavigationView: android.material.bottomnavigation.BottomNavigationView...持久性底部页面是从屏幕底部出现的视图,在主要内容上升高。他们可以垂直拖动以暴露他们的内容列表。 注意:如果要使用模态(对话框)的底页,请使用 BottomSheetDialogFragment。...通过添加以下xml属性来应用该行为 app:layout_behavior=”com.google.android.material.bottomsheet.BottomSheetBehavior”

    3K20

    自定义View:手撸一个带FAB凹槽的底部导航栏

    : 导航栏与页面跳转:使用谷歌官方提供的现成组件BottomNavigationView+Navigation组件+Fragment的方式来实现; FAB停靠导航栏:利用协调者布局CoordinatorLayout...以及每个item对应的页面使用Fragment组件来实现,页面跳转、item切换动画等的相关功能都是现成的,方便快捷。...假设按钮在垂直方向上的当前位移距离大小为d,当按钮向上运动时导航栏上的凹槽应该往中间收缩,在收缩过程中保持两旁小圆半径大小和30°夹角不变,这时另中间圆的圆心同步在垂直方向上移动-d,动态修改distance...的值,由此一来可以达到凹槽收缩的效果,按钮向下运动时同理: 另外还需要考虑按钮完全位于导航栏上方时的情况,这种情况下直接使用直线来代替原来的曲线部分。...let { drawBackground(it) } } } 如上面的代码所示,重写自定义BottomNavigationView的onDraw方法来绘制凹陷效果,外部通过调用updateDistance

    26010

    深入浅出 NavigationUI | MAD Skills

    这是第二个关于导航 (Navigation) 的 MAD Skills 系列,如果您想回顾过去发布的内容,请参考下面链接查看: 导航组件概览 导航到对话框 在应用中导航时使用 SafeArgs 使用深层链接导航...在本文中,我们将为大家讲解另外一个用例,即类似操作栏 (Action Bar)、底部标签栏或者抽屉型导航栏之类的 UI 组件如何在应用中实现导航功能。...我需要在应用中增加一些页面,所以有必要使用抽屉式导航栏或者底部标签栏来辅助用户导航。但是我们该如何使用这些 UI 组件来集成导航功能呢?通过点击监听器手动触发导航动作吗? 不需要!无需任何监听器。...首先我需要添加一个 AppBarConfiguration 对象,NavigationUI 会使用该对象来管理应用左上角的导航按钮的行为。...比如,在我们的应用中,我可以将 donutList 和 coffeeList 的目的页面都定义为最顶层的目的页面。

    3K30

    android-主题引擎-实现换肤功能-Android-skin-support「 ximsfei 」

    突发奇想,给 app 加个换肤功能 三方库地址--https://github.com/ximsfei/Android-skin-support#应用内换肤 ---- Demo 地址: 点击右边 ?...:( 欢迎 star ) ---- 使用过程中踩坑无数,这里一一解释下 首先添加依赖 implementation 'skin.support:skin-support:3.1.1'...skin-support-constraint-layout:3.1.1' // skin-support-constraint-layout ConstraintLayout 控件支持[可选] 记得在...已经设置成功,现在引入皮肤就可以使用 我自定义的垃圾皮肤下载:https://github.com/FishInWater-1999/android-skin-change-applicatiom/tree...().restoreDefaultTheme(); // 指定皮肤插件, 并且监听加载状态 } 效果如下: ---- 如果对您有帮助,欢迎点赞~

    1.3K30

    Android Navigation + Fragment 制作APP主页面导航(步骤 + 源码)

    在dependencies闭包中添加如下依赖: def nav_version = "2.3.2" // navigation依赖 ui 和 fragment implementation...然后建一个Fragment类,这里命名我就用ABCDE来命名了,实际开发中是肯定不能这样的。 ? 然后在layout新建一个布局fragment_b.xml ? 然后修改一下这个布局 来触发这个动作,可以写一个简单的按钮来触发。 在fragment_a.xml中修改布局如下: 在BFragment点击系统的返回键,你会发现直接退出当前应用了,因为这个时候Fragment还是属于MainActivity,那么它使用的就是Activity的返回栈,可当前只有一个Activity...而且使用ViewPager的话就是相当于你把BottomNavigationView替换RadioButton或者TabLayout来使用,这种方式也有很多,我就过多的说明了,上高水长,后会有期~

    10.2K42

    1. Jetpack源码解析---看完你就知道Navigation是什么了?

    背景 之前已经翻译过了Google官方的CodeLabs上面的教程,教程很详细,代码在Github上也可以找到,本篇文章旨在自己的APP上使用效果及演示Demo,来具体的使用Navigation。...基本使用 虽然在之前的文章中已经很详细的介绍了Navigation,但是这里也简单的叙述一下我在项目中的具体使用: 2.1 Navigation+DrawerLayout+ToolBar 我们可以通过使用...也就是对应着在menu中的两个菜单,同时也对应我们侧边栏中的一个首页和一个代码页, <item android:id="@+id/homeFragment"...2.2 BottomNavigationView使用 2.2.1 配置文件 和上面的步骤类似:也是配置好 navigation.xml布局以及 BottomNavigationView所对应的menu...4.3.2 NavController NavContorller是整个导航组件的核心,通过它来加载xml中fragment节点转化成NavDestination,并保存在栈内,通过navigate()

    2.6K30

    ASM字节码插桩

    ,无法还原用户使用场景 * 每个版本迭代都需要PM,RD进行埋点梳理,时间进行消耗 全埋点 * 无法在每个按钮,页面加载调用代码,只需要在应用初始化加载即可 * 用户行为触发自动上报,无需PM...进行辅助记录应用的开启时间和pause时间,如果用户App在后台被强杀或者手动退出,那么下次重新使用APP的时候会进行检测Sp中的时间和当前的时间,然后进行对比,判断用户是否为重新启动APP,还是仅仅切换到后台再切换回来...应用点击控件 ------ 方案1:hook控件的点击事件接口进行代理 整体思路:根据ActivityLifecycleCallbacks接口监听回调,在onActivityResume回调中拿到当前的...,在ASM的官网中也有介绍。...cgtrack/TrackUtils" //普通设置点击事件 if(mInterfaces.contains('android/support/design/widget/BottomNavigationView

    1K50

    Base封装(一)--我的最简MVP架构

    https://blog.csdn.net/lyhhj/article/details/73471270 绪论 最近懒癌症犯了,好久都没写博客了,当然也在做一些东西,也在整理自己一直以来使用的一些技术点...和Model是互通的可以互相通信,在Android中View一般代表着我们的xml进行界面的描述,而对于模型Model部分则大多对应于本地的数据文件或网络获取的数据体,很多情况下我们对这些数据的处理也会在这一层中进行...理想化的MVP模式可以实现同一份逻辑代码搭配不同的显示界面,因为它们之间并不依赖与具体,而是依赖于抽象。...中初始化P,并且连接V,在onDestroy()生命周期中释放P中引用的V。...; import android.support.annotation.NonNull; import android.support.design.widget.BottomNavigationView

    59410

    Android_Jetpack组件---Naviagtion源码解析

    背景 之前已经翻译过了Google官方的CodeLabs上面的教程,教程很详细,代码在Github上也可以找到,本篇文章旨在自己的APP上使用效果及演示Demo,来具体的使用Navigation。...基本使用 虽然在之前的文章中已经很详细的介绍了Navigation,但是这里也简单的叙述一下我在项目中的具体使用: 2.1 Navigation+DrawerLayout+ToolBar 我们可以通过使用...也就是对应着在menu中的两个菜单,同时也对应我们侧边栏中的一个首页和一个代码页, <item android:id="@+id/homeFragment"...2.2 BottomNavigationView使用 2.2.1 配置文件 和上面的步骤类似:也是配置好 navigation.xml布局以及 BottomNavigationView所对应的menu...4.3.2 NavController NavContorller是整个导航组件的核心,通过它来加载xml中fragment节点转化成NavDestination,并保存在栈内,通过navigate()

    2.2K10

    1. Jetpack源码解析---看完你就知道Navigation是什么了?

    背景 之前已经翻译过了Google官方的CodeLabs上面的教程,教程很详细,代码在Github上也可以找到,本篇文章旨在自己的APP上使用效果及演示Demo,来具体的使用Navigation。...基本使用 虽然在之前的文章中已经很详细的介绍了Navigation,但是这里也简单的叙述一下我在项目中的具体使用: 2.1 Navigation+DrawerLayout+ToolBar 我们可以通过使用...也就是对应着在menu中的两个菜单,同时也对应我们侧边栏中的一个首页和一个代码页, <item android:id="@+id/homeFragment"...2.2 BottomNavigationView使用 2.2.1 配置文件 和上面的步骤类似:也是配置好 navigation.xml布局以及 BottomNavigationView所对应的menu菜单文件...4.3.2 NavController NavContorller是整个导航组件的核心,通过它来加载xml中fragment节点转化成NavDestination,并保存在栈内,通过navigate()

    2.2K20
    领券