我们了解了Navigation之后,就不得不提Navigation Editor。我们可以通过Android Studio的 Navigation Editor去编辑和浏览我们的Navigation graph(导航图)
https://developer.android.com/guide/navigation
一、Android Jetpack_Note_CodeLabs一Navigation
不知道小伙伴们是否注意到,用AS创建一个默认的新项目后,MainActivity已经有了很大的不同,最大的区别就是新增加了两个Fragment,同时我们注意到这两个Fragment之间跳转的时候并没有使用之前FragmentTransaction这种形式,而是使用了NavController和NavHostFragment,这就是新一代导航管理————Navigation。
5年以上开发经验,对架构设计以及性能调优有着深刻认知,负责京东商城商品详情的开发,热衷于学习和创新。
在今年的 IO 大会上,发布了一套叫 Android Jetpack 的程序库。Android Jetpack 里的组件大部分我们都接触过了,其中也有一些全新的组件,其中一个就是 Navigation。
Navigation 是 JetPack 中的一个组件,用于方便的实现页面的导航,所以抽象出了一个 destination 的概念,大部分情况一个 destination 就表示一个 Fragment,但是它同样可以指代 Activity、其它的导航图。
必须按照上述流程进行创建 : Fragment -> Navigation Graph -> NavHostFragment -> NavController , 后面的组件依赖于前面的组件 , 否则无法实现 Navigation 导航 ;
当想要切换Fragment时,使用NavController对象,指定跳转Navigation Graph中哪个Fragment,那么NavHostFragment会切换成相应的Fragment
Android开发中流行单个Activity嵌套多个Fragment的UI架构模式,但是对Fragment的管理比较麻烦。Fragment的切换包括对AppBar的管理、Fragment间的切换动画以及Fragment间的参数传递。在此过程中实现代码比较复杂混乱。为此,Jetpack提供了Navigation组件,方便我们管理页面和AppBar。
这是一个新的系列文章,我们称之为 "Modern Android Development 技巧",简称为 "MAD Skills"。本系列文章致力于帮助开发者们打造更好的现代 Android 开发体验,敬请关注。
在 BottomNavigationActivity 中添加 Toolbar,修改主题为 NoActionBar 的。
BottomNavigationView 以更简洁的方式来实现过去的 BottomNavigationBar 的样式。Android Studio 中创建一个 Bottom Navigation Activity,自动生成 Activity。
采用单个Activity嵌套多个Fragment的UI架构模式,已经被大多数的Android工程师所接受。但是,对于Fragment的管理一直是一件比较麻烦的事情,工程师需要通过FragmentManager和FragmentTransaction来管理Fragment之间的切换。
==navigation== :视图导航的根部标签, ==app:startDestination="@id/home_fragment"== 指定以哪个页面为首页。<navigation> 标签下包含3中子标签。:
单个Activity嵌套多个Fragment的UI架构模式,已经被大多数的Android工程师所接受和采用。但是,对Fragment的管理一直是一件比较麻烦的事情。我们需要通过FragmentManager和FragmentTransaction来管理Fragment之间的切换。页面的切换通常还包括对应用程序App bar的管理,Fragment之间的切换动画以及Fragment之间的参数传递。纯代码的方式使用起来不是特别友好,并且Fragment和App bar在管理和使用的过程中显得很混乱。
目前最新版本是3.4,前往https://androidstudio.googleblog.com/下载最新版本。
Android 开发中 , 最常用的 UI 架构 就是 使用一个 Activity 嵌套多个 Fragment , 这就需要 对 Fragment 进行管理 ;
本人16年毕业于中南林业科技大学软件工程专业,毕业后在教育行业做安卓开发,后来于19年10月加入37手游安卓团队;
这是一个新的系列文章,我们称之为 "Modern Android Development 技巧",简称为 "MAD Skills"。本系列文章致力于帮助开发者们打造更好的现代 Android 开发体验,敬请关注。今天为大家发布本系列文章中的第一篇: 导航 (Navigation) 组件概览。
activity中fragment默认为NavHostFragment,NavHostFragment通过navGraph与navigation导航编辑器进行关联。 app:defaultNavHost="true"可以让NavHostFragment处理系统的返回事件
这是第二个关于导航 (Navigation) 的 MAD Skills 系列,如果您想回顾过去发布的内容,请参考下面链接查看:
NavigationUI 类支持一些系统自带的控件 , 配置后 , 自动跳转 Fragment 界面的功能 , 使用起来非常简洁 , 支持的可配置 Navigation 跳转的控件有 :
本来做这个是因为公司的内部需要一个扫描的小程序,开始想就是全部重新用JetPack组件做,不过想到了后台产品中有一个可以应用到现在的使用场景,于是花了一天时间修改了一下那个程序就可以直接用了,所以这篇文章就做为学习的Android的组件了。
在 Android 中 , 使用 Navigation 导航组件 , 运行应用时报错 , 报错信息如下 :
我相信你肯定见过这样的App主页面,底部或者顶部有多个按钮,点击之后会切换当前的页面,滑动当前页面也会切换底部按钮,这里我用几个App的主页面来说明一下吧
视频介绍 //v.qq.com/txp/iframe/player.html?origin=https%3A%2F%2Fmp.weixin.qq.com&containerId=js_tx_video
上篇文章Android-Jetpack笔记-Navigation之Fragment使用提到,每次切换目的地,fragment是反复销毁重建的,按照谷歌推荐的1个APP只需1个activity的思路开发,这样是没问题的,但是这里的fragment是作为首页的3个常驻页面,我们是希望能够保存起来的,毕竟,销毁重建需要重新请求网络数据,重新初始化view,严重影响用户体验,那么接下来继续上篇文章的分析,支持Fragment的复用。
在JetPack中有一个组件是Navigation,顾名思义它是一个页面导航组件,相对于其他的第三方导航,不同的是它是专门为Fragment的页面管理所设计的。它对于单个Activity的App来说非常有用,因为以一个Activity为架构的App页面的呈现都是通过不同的Fragment来展示的。所以对于Fragment的管理至关重要。通常的实现都要自己维护Fragment之间的栈关系,同时要对Fragment的Transaction操作非常熟悉。为了降低使用与维护成本,所以就有了今天的主角Navigation。
在 Android Studio 中 , 使用右键菜单 , 创建 " Bottom Navigation Activity " ,
Navigation是一种导航的概念,即把Activity和fragment当成一个个的目的地Destination,各目的地形成一张导航图NavGraph,由导航控制器NavController来统一调度跳转,本文会先简单分析下AS自带的示例代码。
以前大部分时候都是将Activity作为页面,Fragment作为页面中的子页面(当时称之为碎片),基本上大部分功能由activity实现,比如老版本的淘宝app就是有上百个activity,当时卡顿的不要不要的。随着技术迭代,我们发现activtiy创建、切换、销毁所消耗的性能远比fragment要大,fragment如今也能替代activity实现大部分功能。
之前的 默认 Navigation 跳转方法 , 只需要传入 navigation 资源 ID , 即可完成页面跳转 ;
上一篇文章我们介绍了Android Studio的安装以及Android SDK的目录结构。这篇文章将介绍如何使用Android Studio创建第一个Android应用,重点介绍Android Studio的目录结构。
不管你之前用没用过Jetpack Navigation组件,但是或多或少你也可能听说过它。它是Jetpack库中的一个路由组件。此刻你的脑海中可能会浮现阿里ARouter框架。如果你熟悉ARouter但是对Navigation比较陌生,那么你先简单把它们联系在一起,有个直观的感受。
欢迎来到第二个关于导航的 MAD Skill 系列 的另一篇文章!本文我们将介绍一个呼声很高的功能,即导航 (Navigation) 对多返回栈的支持。如果您更倾向于视频的形式,请 点击这里 查看视频内容。
上一篇文章Navigation——Fragment创建新的实例问题,我们简述了我们在使用Navigation遇到的Fragment创建新的实例的问题。接下来,我们在这篇文章就来解决一下我们遇到的这个问题
周末,有位同学在微信公共号后台,给我留言,说看了我之前写两篇文章,谷歌官方组件Navigation你了解了吗?、谷歌官方组件Navigation你会用了吗?之后,也在尝试使用Navigation,但是使用的过程当中遇到了问题: 每次进入下一个Fragment不管任务栈里是否存在该Fragment的实例,都会创建一个新的实例而不会复用。 为了说明问题,我录了一个GIF
最近两年,MVVM的呼声越来越高,说实话,在经历了MVP的臃肿,MVP的繁琐,我有点怕了。但是这次Google官方带来的一系列为MVVM架构设计的武器—Jetpack,真的让我惊喜到了。
通过ViewModel实现的数据共享符合Android的MVC设计模式,将数据独立出来
如果想要注解处理器能够在编译器生成代码,需要做一个配置说明,这里有两种配置方法: 具体参考这篇文章:Java AbstractProcessor实现自定义ButterKnife
在 Android 开发中 , 使用 Jetpack 的 Navigation 组件报如下错误 :
Android 的技术更新的太快了,比如:kotlin、jetpack 等等,要学习的东西实在是太多了,今天我就来介绍一下 BottomNavigationView 的最新用法以及注意事项。
ViewModel 甫一发布,便成为了 Jetpack 中的核心组件之一。我们在 2019 年做的一份开发者问卷显示,超过 40% 的 Android 开发者已经在自己的应用中使用了 ViewModel。ViewModel 可以将数据层与 UI 分离,而这种架构不仅可以简化 UI 的生命周期的控制,也能让代码获得更好的可测试性。
NavDestination 节点的封装类对应nav_graph.xml文件中的 </navigation>, </fragment> </activity>, </dialog>目标节点(即Destination),同时有如四个子类:NavGraph,FragmentNavigator#Destination,ActivityNavigator#Destination,DialogFragmentNavigator#Destination
ViewModel 甫一发布,便成为了 Jetpack 中的核心组件之一。我们在 2019 年做的一份开发者问卷显示,超过 40% 的 Android 开发者已经在自己的应用中使用了 ViewModel。ViewModel 可以将数据层与 UI 分离,而这种架构不仅可以简化 UI 的生命周期的控制,也能让代码获得更好的可测试性。如果想了解更多,可以参考 ViewModel: 简单介绍视频和官方文档。
领取专属 10元无门槛券
手把手带您无忧上云