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

【Jetpack】Navigation 导航组件 ⑤ ( NavigationUI 类使用 )

Android 开发中 , NavigationUI 是 用于构建 和 管理应用程序导航界面 的重要工具 , 可以极大地提高开发效率 ; 一、NavigationUI 类简介 NavigationUI 是 Google...本章节介绍使用 AppBar 中的菜单选项控制 Navigation 界面跳转 的流程 ; 1、创建 Fragment 创建两个 Fragment , 分别作为要 互相跳转 的 两个界面 ; 右键点击包名..., 松开鼠标 , 会弹出如下 " Navigation Graph " 对话框 , 选择要拖入的 NavigationGraph , 然后点击右下角 " OK " 按钮 ; 拖入后 , 为该空间添加约束...NavigationUI 进行导航 , 如果跳转失败 , 再使用传统的方式 return NavigationUI.onNavDestinationSelected(item, navController...NavigationUI 进行导航 , 如果跳转失败 , 再使用传统的方式 return NavigationUI.onNavDestinationSelected(item, navController

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

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

    然后会弹出一个窗体,在这个窗体里面设置文件名称,并选择文件类型,然后点击OK。 ? 然后查看这个nav_graph.xml,你会发现有报错 ?...然后建一个Fragment类,这里命名我就用ABCDE来命名了,实际开发中是肯定不能这样的。 ? 然后在layout新建一个布局fragment_b.xml ? 然后修改一下这个布局 <?...它就不报错了,这句话的意思是未使用导航的许可。因为我现在还没有使用这个nav_graph.xml所以要加上这一句话告诉AS,让它放心。等我们真正去使用时,是没有影响的,去不去掉都行。 3....,从这个命名来看就知道要从A跳转到B。...这是Google要做的UI统一,通过material来实现一些效果和动画。 7.

    9.7K42

    实践 | Google IO 应用是如何适配大尺寸屏幕 UI 的?

    因此,让应用能充分利用额外的屏幕空间显得尤其重要。本文将展示我们为了让 Google I/O 应用在大尺寸屏幕上更好地显示而用到的一些技巧。...Google I/O 应用在主 Activity 中使用了两个不同的布局,其中包含了我们的人体工程学导航。...由于 Google I/O 应用使用了 Jetpack Navigation 实现不同界面之间的切换,这个挑战对导航图有怎样的影响,我们又该如何记录当前屏幕上的内容呢?...不过,我们不能直接从会议列表导航到会议详情,因为两者如今已经被放到了不同的窗格中,也就是存在于不同的导航图里。...在应用运行时,数据绑定会调用下面的函数,并将解析自资源文件的值作为参数传进去。

    2.1K20

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

    背景 之前已经翻译过了Google官方的CodeLabs上面的教程,教程很详细,代码在Github上也可以找到,本篇文章旨在自己的APP上使用效果及演示Demo,来具体的使用Navigation。...基本使用 虽然在之前的文章中已经很详细的介绍了Navigation,但是这里也简单的叙述一下我在项目中的具体使用: 2.1 Navigation+DrawerLayout+ToolBar 我们可以通过使用...我们可以在naviagtion布局中使用标签, name是我们传参的key argType是参数类型 defaultValue默认值 nullable 是否可空 <argument android...的navigate()方法同时支持direction类型的传递。...e) { return false; } } 我们看到最后还是调用navigate()方法,并且将MenuItem的ID作为参数传递过去: public

    2.2K20

    Android Compose 新闻App(六)导航动画、WebView、浮动按钮、底部导航

    正文   一些应用有一些花里花哨的操作就会让人眼前一亮,大部分花里胡哨的操作就是动画,那么作为Compose的导航也是可以使用动画的,下面我们来使用一下: 一、导航动画 ① 添加依赖   导航动画是需要一个依赖库的...② 使用 使用之前我们先来看一下要更改的地方,如下图所示: 图中是上一篇文章中所写的代码,如果要使导航有动画效果,则需要换一下。...换了之后如下图所示: 对应的包名就是这三个: import com.google.accompanist.navigation.animation.AnimatedNavHost import com.google.accompanist.navigation.animation.composable...记得clickable要添加,下面我们运行一下,看能不能跳转过去。...真是世事难料啊,没想到会报错,报错的原因就是url的问题,如果我们将Url作为参数传递,那么需要对url做一个处理,如下图所示: 下面我们再运行一次: 加载就完成了。

    4.5K20

    JetPack指路明灯—Navigation

    创建Navigation Graph 在res文件夹下创建navigation文件夹,并定义一个xxxx.xml文件,选择类型为navigation。...同时,在onCreate的时候,创建了NavController,与mGraphId进行绑定。 使用路由 在Fragment中,可以通过NavController来进行路由,代码如下所示。...popBackStack navigateUp只能响应向上一级的路由控制,而不能跨级进行路由返回,popBackStack则是对其的补充,可以指定路由返回的action,代码如下所示。...个人感觉这个API命名为popUntil可能更合适一点。 在代码中,也存在类似的调用方法。...总结 Navigation的引入,是Google在JetPack上下的第一步棋,通过Navigation,Google指明了在JetPack下Android开发的大方向: 单Activity架构:Google

    97820

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

    背景 之前已经翻译过了Google官方的CodeLabs上面的教程,教程很详细,代码在Github上也可以找到,本篇文章旨在自己的APP上使用效果及演示Demo,来具体的使用Navigation。...基本使用 虽然在之前的文章中已经很详细的介绍了Navigation,但是这里也简单的叙述一下我在项目中的具体使用: 2.1 Navigation+DrawerLayout+ToolBar 我们可以通过使用...我们可以在naviagtion布局中使用标签, name是我们传参的key argType是参数类型 defaultValue默认值 nullable 是否可空 <argument android...的navigate()方法同时支持direction类型的传递。...e) { return false; } } 我们看到最后还是调用navigate()方法,并且将MenuItem的ID作为参数传递过去: public

    2.5K30

    1. Android_Jetpack组件---Naviagtion源码解析

    背景 之前已经翻译过了Google官方的CodeLabs上面的教程,教程很详细,代码在Github上也可以找到,本篇文章旨在自己的APP上使用效果及演示Demo,来具体的使用Navigation。...基本使用 虽然在之前的文章中已经很详细的介绍了Navigation,但是这里也简单的叙述一下我在项目中的具体使用: 2.1 Navigation+DrawerLayout+ToolBar 我们可以通过使用...我们可以在naviagtion布局中使用标签, name是我们传参的key argType是参数类型 defaultValue默认值 nullable 是否可空 <argument android...的navigate()方法同时支持direction类型的传递。...e) { return false; } } 我们看到最后还是调用navigate()方法,并且将MenuItem的ID作为参数传递过去: public

    2.1K10

    【Jetpack】Navigation 导航组件 ④ ( Fragment 跳转中使用 safe args 安全传递参数 )

    Bundle 传递数据安全性差 使用 传统的方式 , 在 Fragment 之间 传递 数据 , 类型很不安全 , 设置 传递的数据时 , 需要设置 放入的 数据类型 , 如下代码所示 : // 正常方式传递参数...NAME 属性值是 String 类型的 , 那么在 FragmentB 中获取的 NAME 属性值也必须是 String 类型的 , arguments?....let { name = it.getString("NAME") } 此处 没有 类型检查 , 即使你写错了具体的 属性值 名称 和 属性值 类型 , 编译器也不会报错 , 但是在执行时 ,...会出现错误 ; 下面的代码中 , 调用 getInt(“Name”) 也不会报错 ; 上面的 使用 Bundle 在 Fragment 之间传递 参数 , 没有类型检查 , 即使写错了数据类型 也不会报错...FragmentA 跳转到 FragmentB 使用传统的方式传递参数 , 类型不安全 ; FragmentA 页面代码 : package kim.hsl.nav import android.os.Bundle

    48720

    【Android进阶必学】JetPack指路明灯—Navigation

    创建Navigation Graph 在res文件夹下创建navigation文件夹,并定义一个xxxx.xml文件,选择类型为navigation。...同时,在onCreate的时候,创建了NavController,与mGraphId进行绑定。 使用路由 在Fragment中,可以通过NavController来进行路由,代码如下所示。...popBackStack navigateUp只能响应向上一级的路由控制,而不能跨级进行路由返回,popBackStack则是对其的补充,可以指定路由返回的action,代码如下所示。...个人感觉这个API命名为popUntil可能更合适一点。 在代码中,也存在类似的调用方法。...总结 Navigation的引入,是Google在JetPack上下的第一步棋,通过Navigation,Google指明了在JetPack下Android开发的大方向: 单Activity架构:Google

    2K00

    Android-Jetpack笔记-Navigation之Fragment支持复用

    上篇文章Android-Jetpack笔记-Navigation之Fragment使用提到,每次切换目的地,fragment是反复销毁重建的,按照谷歌推荐的1个APP只需1个activity的思路开发,...这样是没问题的,但是这里的fragment是作为首页的3个常驻页面,我们是希望能够保存起来的,毕竟,销毁重建需要重新请求网络数据,重新初始化view,严重影响用户体验,那么接下来继续上篇文章的分析,支持...,第1步,在调用fragment初始化的地方,改成复用: //FixFragmentNavigator.java NavDestination navigate(){ //fix 1: 把类名作为...前边提到的自定义导航器需要指定名字@Navigator.Name("fixFragment"),是因为不同类型的目的地(页面)需要使用不同的导航器,在NavigatorProvider里有个map存储了多个导航器...可以看出,Navigation的思想是,把各种类型的页面都抽象成目的地Destination,进行统一跳转,不同的导航器则封装了不同类型页面跳转的实现,由NavController统一调度,而许许多多的目的地则编织成了一个导航图

    2K20

    安卓Navigation系列——进阶篇

    前言 上篇对Navigation的一些概念进行了介绍,并在前言中提到了app中常用的一个场景,就是app的首页,一般都会由一个activity+多个子tab组成,这种场景有很多种实现方式,比如可以使用RadioGroup...使用Navigation+BottomNavigationView结合navigationUI扩展库,这种方式是不是相比于以往的实现方式更简单?...onCreateNavController(mNavController); ...... } 去掉无关代码,只看核心代码,可以看到,有一个NavHostController类型的mNavController...我们知道replace方法每次都会重新创建fragment,所以使用Navigation创建的底部导航页面,每次点击切换页面当前fragment都会重建。...那么我们是不能在布局文件中通过app:navGraph属性指定自定义的导航资源文件了,只能在布局文件中去掉app:navGraph这个属性,然后在添加FixFragmentNavigator的同时,通过代码将导航资源文件设置进去

    3K30

    compose--附带效应、传统项目集成、导航

    ,应该使用rememberUpdatedState 3.1 不使用remember 先来看一个例子,我在重组时生成一个随机数,并作为onTimeout()的打印参数,将onTimeout()传给MyRememberUpdatedState...remember 我们尝试使用remember,将onTimeout作为State状态并记住,并以onTimeout作为key使得每次onTimeout发生改变,触发值的更新: @Preview @Composable...接下来使用navController来导航到不同的可组合项,下面是官方给出的示例的几种方式: 在导航到“friendslist”并加到返回堆栈中 navController.navigate("friendslist...("mine/a1587") 参数类型默认为字符串,也可以通过navArgument指定参数的类型: composable( "home/{userId}", arguments = listOf(navArgument...NavType.IntType defaultValue = 0 }) ) { Message() } 5.深层链接 深层链接照搬了官方文档:深层链接 如果你想要将特定的网址、操作或 MIME 类型与导航绑定

    2.2K40

    【Jetpack】Navigation 导航组件 ① ( Navigation 引入 | Navigation 特点 | Navigation 重要组件 | Navigation 使用流程 )

    Navigation 重要组件 ---- Navigation 重要组件 : Navigation Graph 组件 : 是 Navigation 组件中的 Xml 文件 , 这是新加入的 Xml 文件类型...可以轻松地跳转到不同的目的地 , 并处理回退操作 ; 切换 Fragment 显示流程 : 使用 NavController 组件 切换 Fragment , 设置 要跳转的 定义在 Navigation...Graph 中定义的 Fragment ; NavController 组件 会将 指定的 Fragment 显示到 NavHostFragment 组件中 ; 四、Navigation 使用流程 -...组件 执行 Fragment 页面跳转 , 并添加动画效果 使用 NavController 组件实现页面导航 使用 Safe Args 插件安全传递数据 创建 Navigation Graph 组件有一个前提...Resource Type 为 Navigation , 其 Directory name 会被自动设置为 navigation , 需要自定义设置的是 File name , 输入文件名称即可 , 这里命名

    58140
    领券