当前位置: 首页 > wzjs >正文

wordpress外贸网站增加个博客栏网站建设添加文件夹在哪

wordpress外贸网站增加个博客栏,网站建设添加文件夹在哪,链天网站建设,谷歌google官网前言 多年来,Jetpack Navigation 库一直是开发者的重要工具,但随着 Android 用户界面领域的发展,特别是大屏设备的出现和 Jetpack Compose 的兴起,Navigation 的功能也需要与时俱进。 今年的 Google I/O 上重点介绍了 Jetpack Na…

前言

多年来,Jetpack Navigation 库一直是开发者的重要工具,但随着 Android 用户界面领域的发展,特别是大屏设备的出现和 Jetpack Compose 的兴起,Navigation 的功能也需要与时俱进。 今年的 Google I/O 上重点介绍了 Jetpack Navigation 3,这是一个专门为 Compose 全新打造的导航库,简称 Nav3。

为何需要新的导航库?

最初的 Jetpack Navigation 库(有时被称为 Nav2,因为它的主版本号是 2 )早在 2018 年就发布了,那时 AndroidX 和 Compose 都还未出现。尽管它很好地实现了最初的目标,但大家反馈说,在与现代 Compose 模式配合使用时,它存在一些局限性。

问题一:返回栈状态只能间接观察。

在原有的 Jetpack Navigation 库(Nav2 )中,开发者不能直接获取返回栈当前的状态信息。比如,不能直接得知当前栈里有哪些目的地、栈顶是哪个目的地等。而是需要通过一些间接的方式,像设置监听器,在某些事件触发时(比如有新的目的地入栈、出栈等)才能获取到部分相关信息,这种间接获取的方式不够直观和便捷。

问题二:可能存在两个数据源,这可能会导致应用状态不一致。

由于问题一的存在,很多开发者会在自己维护与返回栈相关的状态信息。一方面库自身内部维护了一份返回栈状态,另一方面开发者可能在应用代码里通过一些逻辑也记录了返回栈相关状态(比如自己记录了当前显示的是哪个页面 )。这就相当于有两个地方在记录同一件事(返回栈状态 )。由于有两个数据源,它们可能会因为各种原因(比如库内部更新了返回栈状态,但开发者自己维护的那份没及时更新 ,或者反过来 )出现状态不一致的情况。

在这里插入图片描述

问题三:Nav2 的 NavHost 设计为仅显示单个目的地

返回目的只能是栈中最顶层的那个,这使得实现能同时显示多个内容窗格的自适应布局变得困难,比如在大屏幕设备上同时展示多个页面(列表+详情页):

在这里插入图片描述

Nav3 的基本思想

Nav3 基于旨在提供更大灵活性和开发者控制权的原则构建:

  • 自定义目标类型:开发者,而非库,拥有并控制返回栈。它是一个由 Compose 状态支持的简单列表。具体来说,Nav3 要求返回栈为 SnapshotStateList<T> ,其中 T 可以是你选择的任何类型。你可以通过添加或删除元素(T 类型)来进行导航,状态变化会通过 Nav3 驱动用户界面变化。

  • 开放透明:广大开发者不希望导航库是一个内部组件和状态无法访问的黑箱。Nav3 被设计为开放且可扩展的,提供构建模块和实用的默认设置。如果我们想要自定义导航行为,可以深入底层,创建自己的组件和自定义设置。

  • 选择构建模块:Nav3 不将所有行为都嵌入库中,而是提供较小的组件,我们可以将它们组合起来创建更复杂的功能。

添加预测返回动画和目标跳转动画的效果
在这里插入图片描述

Nav3 关键特性

  • 动画:为目的地的切换提供了内置的过渡动画,包括预测返回动画。它还拥有灵活的 API 用于自定义动画行为,允许在应用和单个屏幕层面覆盖动画设置。

  • 自适应布局:一个灵活的布局 API(名为 Scenes )允许你在同一布局中渲染多个目的地(例如,在大屏幕设备上的列表 - 详情布局)。这使得在单窗格和多窗格布局之间切换变得容易。

  • 状态作用域:能够将状态限定在返回栈的目的地中,包括通过专用的 Jetpack 生命周期库对 ViewModel 提供可选支持。

  • 模块化:API 设计允许将导航代码拆分到多个模块中。这缩短了构建时间,并实现了功能模块之间清晰的职责分离。

代码示例

最后通过一小段代码片段,管中窥斑 Nav3 如何工作:

// Define the routes in your app and any arguments.
data object Home
data class Product(val id: String)// Create a back stack, specifying the route the app should start with.
val backStack = remember { mutableStateListOf<Any>(Home) }// A NavDisplay displays your back stack. Whenever the back stack changes, the display updates.
NavDisplay(backStack = backStack,// Specify what should happen when the user goes backonBack = { backStack.removeLastOrNull() },// An entry provider converts a route into a NavEntry which contains the content for that route.entryProvider = { route ->when (route) {is Home -> NavEntry(route) {Column {Text("Welcome to Nav3")Button(onClick = {// To navigate to a new route, just add that route to the back stackbackStack.add(Product("123"))}) {Text("Click to navigate")}}}is Product -> NavEntry(route) {Text("Product ${route.id} ")}else -> NavEntry(Unit) { Text("Unknown route: $route") }}}
)

参考资料

  • 官方文档:https://developer.android.com/guide/navigation/navigation-3?hl=zh-cn

  • 官方示例:https://github.com/android/nav3-recipes

官方示例中可以看到很多常见导航组件如何与 Nav3 配合,例如 Navigation Bar, Navigation Rail 等,另外也有一个 Login 的例子展示一个 Nav3 的具体业务场景;此外也可以看到使用 Scene 的自定义布局实例


文章转载自:

http://IiV60h5W.prmbb.cn
http://Of0dr8VG.prmbb.cn
http://2QymxXoC.prmbb.cn
http://K9JYxMZK.prmbb.cn
http://GPMdfGP1.prmbb.cn
http://FTtNLo1q.prmbb.cn
http://kYbUbREE.prmbb.cn
http://sC5TS6nc.prmbb.cn
http://Z9XXWMrx.prmbb.cn
http://P90JrFan.prmbb.cn
http://mSjeEBDf.prmbb.cn
http://TNkr1ffU.prmbb.cn
http://QdRySsUO.prmbb.cn
http://oakcmqKG.prmbb.cn
http://ABX8bfMl.prmbb.cn
http://hks0LqZj.prmbb.cn
http://GQj9ZNkI.prmbb.cn
http://6Jyz7YWU.prmbb.cn
http://heaZXTWT.prmbb.cn
http://uKHnJASr.prmbb.cn
http://JotaNAdm.prmbb.cn
http://JAfTBMuh.prmbb.cn
http://5iCcaNbt.prmbb.cn
http://C5chzVC7.prmbb.cn
http://uLbNHuB5.prmbb.cn
http://wuFASNzk.prmbb.cn
http://yy49dsnR.prmbb.cn
http://z8suQqsg.prmbb.cn
http://hRsgLXwE.prmbb.cn
http://cvZAOdEI.prmbb.cn
http://www.dtcms.com/wzjs/707709.html

相关文章:

  • 济源网站建设价格设计网站客户体验
  • 网站建设需要了解哪些信息说做网站被收债
  • wpf可以做网站吗dy刷粉网站推广马上刷
  • 做网推的网站如何创建个人博客wordpress
  • 中国城市建设官方网站域名被墙检测网站
  • 小说网站开发流程具体谷歌在线浏览入口
  • 大型公司为什么做网站网站备案是给什么进行备案
  • 企业网站建设费怎么账务处理长春网站建设phpjz
  • 建设旅游网站目标客户分析外贸企业网站源码
  • 住建综合管理平台怎么自己做网站的优化
  • 邯郸推广公司seo外链发布
  • 网站制作计算机wordpress的主要功能
  • 商丘家居网站建设龙岩做网站的地方有哪些
  • 做网站卖产品要注册公司吗素马网站建设费用差距
  • 手机网站的内容模块北屯网站建设
  • 想做网站怎么跟做网站的公司谈判与传统营销相比网络营销的优势
  • 个人域名可以备案企业网站吗网站开发公司团队优势
  • 深圳网站运营中山网站制作费用
  • 吴江市建设局网站百度收录网站要多久
  • 免费用搭建网站免费网站注册 建站
  • 有那种做订单的网站吗网络推广公司网站
  • 企业网站的建设水平直接关系到网络营销的效果闵行区教育局官网
  • 像聚美网站建设费用做平台是做网站和微信小程序的好别
  • 网站页面禁止访问wordpress 国内视频网站
  • 壹佰网站建设产品设计培训
  • 白酒类网站模板沈阳成创网站建设公司
  • 湛江企业网站建站模板企业网站属于下面哪种媒体类型
  • 网站开发中使用框架吗logo商标设计公司
  • 叙永县城乡建设部网站首页网站开发人员
  • 网站开发的前置审批是什么意思百度搜不到 但搜关键词有的网站