Jetpack学习之Navigation详细教程 您所在的位置:网站首页 染色体组成图怎么画 Jetpack学习之Navigation详细教程

Jetpack学习之Navigation详细教程

2023-07-09 07:09| 来源: 网络整理| 查看: 265

前言

官网的教程真的很详细,跟着学的时候一定要下他的demo,然后他会一步一步教你怎么实现,一步一步的看效果

链接奉上:https://developer.android.com/codelabs/android-navigation?hl=zh-cn#0

组成部分 导航图(新 XML 资源)相当于一张地图,标记了各个目的地以及目的地的一些信息 NavHostFragment 算一个载体,显示地图,获得控制器 NavController 控制器,你可以利用它去你想去的地方

一、图怎么画

在res目录下创建navigation目录,然后new一个Navigation Resource File,这样你就用了自己的地图,然后就可以在上面“作画”了

每一个fragment都是一个目的地,也是一个页面 对于设计fragment的属性:可以直接用代码写入你对目的地属性的设计,也可以直接点显示图中的页面或者导航箭头进行设计(点图直接选属性,自己操作就好啦,这里就不介绍啦)

action

//切换页面以及切换页面动画的属性 //加入从A切换到B //从右边出去 这四个动画,从效果上看的话,第一二指的是A页面进来的动画和B页面出去的动画 第三四则是B页面进来和A页面出去的动画

argument

//默认值 如果传递的数据是固定的,明确的值,可以直接写在这里;动态的下面会讲

deeplink(下面内容详细说)

二、页面怎么打开

使用导航图进行导航

findNavController(this).navigate(R.id.flow_step_one_dest, null, options)

使用操作进行导航

这种方法要在xml文件中把activon等属性写好才行

Navigation.createNavigateOnClickListener(R.id.*next_action*, null)

用safe arge进行导航 val flowStepNumberArg = 1 val action = HomeFragmentDirections.nextAction(flowStepNumberArg) findNavController(this).navigate(action,options)

三、数据怎么传

这里做个总结吧,毕竟上面的内容都有体现啦

是直接在xml文件中,设置argument属性 是利用safe arge,打开页面的时候传递数据

四、系列导航栏怎么搭配的

统一的,导航栏中显示的项都是在xml文件中声明的,举一个例子就都明白了

在res目录中-创建menu文件夹-创建Menu Resource file文件,eg:

//内容 底部导航按钮

创建布局文件

//就是我们创建的menu文件

java文件中关联

private fun setupBottomNavMenu(navController: NavController) { val bottomNav = findViewById(R.id.bottom_nav_view) bottomNav?.setupWithNavController(navController) //navController 指的是最开始说的控制器 } 侧边栏(抽屉式)

布局文件

java文件中设置

//跟底部导航栏思路一样,布局+设置控制器就可以实现侧边栏的跳转和侧边栏的存在, //但是展示出来还需要有按钮,所以还需要设置acitonabar private fun setupNavigationMenu(navController: NavController) { val sideNavView = findViewById(R.id.nav_view) sideNavView?.setupWithNavController(navController) } //以下是为了让侧边栏有按钮点击可以展示出来的添加actionBar的操作 //通过传递一组顶级目的地 ID 和抽屉式导航栏布局来创建 AppBarConfiguration(可以理解为,基础信息的配置:比如显示的条目啊,要跳到哪里啊) //DrawerLayout是根布局,具体的可以看官方demo val drawerLayout: DrawerLayout? = findViewById(R.id.drawer_layout) appBarConfiguration = AppBarConfiguration( setOf(R.id.home_dest, R.id.deeplink_dest), drawerLayout) //设置actionBar,添加按钮的展示 private fun setupActionBar(navController: NavController, appBarConfig : AppBarConfiguration) { setupActionBarWithNavController(navController, appBarConfig) } //处理up按钮的操作 override fun onSupportNavigateUp(): Boolean { return findNavController(R.id.my_nav_host_fragment).navigateUp(appBarConfiguration) } 下拉菜单

生搬硬套,反正就是告诉你咋写就咋写吧

override fun onCreateOptionsMenu(menu: Menu): Boolean { val retValue = super.onCreateOptionsMenu(menu) val navigationView = findViewById(R.id.nav_view) if (navigationView == null) { menuInflater.inflate(R.menu.overflow_menu, menu) return true } return retValue } override fun onOptionsItemSelected(item: MenuItem): Boolean { return super.onOptionsItemSelected(item) return item.onNavDestinationSelected(findNavController(R.id.my_nav_host_fragment)) || super.onOptionsItemSelected(item) }

五、deeplink怎么实现

//还没掌握后续补充



【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有