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

Jetpack Compose之 在Compose中使用Navigation导航

前言 大约在一年半前,我发布了Compose的第一篇文章 Jetpack Compose开篇 之 HelloWorld,连我自己也没想到,这一年半的时间中我竟再也没有看过Compose..., 如今Compose...已经发布了稳定版本,还没学会Compose让我的头发又白了许多~ 使用Navigation在Compose中导航 如果你之前不喜欢Android提倡的”单Activity“应用,那么在Compose中相信你会慢慢习惯的... =) {     } } NavHost对象需要两个必传参数,一个是NavController,一个是起始路由地址,NavController 对象是 Navigation 组件的中心 API,我们可以通过...在页面2中调用popBackStack方法将当前页面出栈便又回到了页面1,这里就不贴页面2的代码了。...总结 除此之外,Navigation  在Compose中还支持深层链接等,关于Compose的更多用法,欢迎持续关注我~

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

    Jetpack Compose 使用前后对比

    为了包含 Jetpack Compose 1.0.0-beta05 的更新内容,这篇文章在第一次发布后做出了更新。如果您希望查看 原始版本,请点击 这里。...,同时每个 Fragment 的 UI 使用了 Jetpack Compose 实现。...第二个 (也是最后一个) 阶段是从 Fragment 迁出,并直接使用 Navigation Compose 组件。这一步在 这个 PR 中完成。...这一现象与 Compose 无关。"完全接入 Compose" 使用的是最新版本的 Dagger/Hilt,该版本使用了 Android Gradle Plugin 7.0 中的新 ASM API。...您可以查看我们发布的文章来了解更多: 深入详解 Jetpack Compose | 优化 UI 构建 深入详解 Jetpack Compose | 实现原理 注意事项 关于上面的所有结果,有些事项需要注意

    1.1K30

    Jetpack Compose中UI数据刷新

    前言 Jetpack Compose中想更新界面上的任何东西都需要重组,重组本质就是再执行一次当前函数。...触发重组方式有 State值改变 调用方法刷新 State 创建State有以下几种方式 注意 只有在Kotlin中才能生效,在Java中是不行的。...对象 State需要注意的点: 一定是要State对象本身不变,State的值改变才行,其中很多不熟悉kotlin泛型时经常出现的坑是: //假设有个User data类 val stete = mutableStateOf..." //还有一种更常用的写法,使用by关键字,by是kotlin的语法糖 var user:User by mutableStateOf(User()) //State的by是对stete.value的包装...调用方法 在Composable函数中使用currentRecomposeScope获得RecomposeScope对象,在需要的地方执行recomposeScope.invalidate()即可重组所在作用域

    21510

    Android Jetpack组件 Compose 使用介绍

    Android Jetpack组件 Compose 使用 前言 正文 一、创建Compose项目 1. setContent 2....排列效果 3. gradle 二、布局 ① 布局填充 ② 大小设置 ③ 图片设置 ④ 空间占位 三、列表 ① 显示列表 ② item点击事件 四、源码 前言   一直以来,在Android 中构建UI页面是一个很耗时的操作...,我们需要图形界面和xml去创建布局,通过预览达到我们想要的效果,而Jetpack推出的新组件Compose就解决了这个痛点,下面让我们来了解它,使用它。...使用它,来感受声明式UI的强大之处。 正文   Jetpack Compose是一个用于构建原生Android UI的现代工具包。...这里我把这里的代码注释掉,那么你在AS中就无法预览了,现在我们就了解了MainActivity中的基本构建了,那么下面我们再来观察一下gradle。

    2.9K20

    Python中的可变对象与不可变对象

    Python中所有类型的值都是对象,这些对象分为可变对象与不可变对象两种: 不可变类型 float、int、str、tuple、bool、frozenset、bytes tuple自身不可变,但可能包含可变元素...,a+=b和a=a+b等价,对于可变对象并不等价,dict和set不支持+=和+操作符。...在Python中,不可变对象,浅拷贝和深拷贝结果一样,都返回原对象: import copy ​ ​ t1 = (1, 2, 3) t2 = copy.copy(t1) t3 = copy.deepcopy...,只是若原对象中存在可变属性/字段,则浅拷贝产生的对象的属性/字段引用原对象的属性/字段,深拷贝产生的对象和原对象则完全独立: l1 = [1, 2, 3] l2 = l1.copy() print(l1...,这里name属性的地址一样 p3.id.name = "p3" print(p1.id.name) # 还是p2 Python中可使用以下几种方式进行浅拷贝: 使用copy模块的copy方法

    79510

    Python中的可变对象和不可变对象

    什么是可变/不可变对象 不可变对象,该对象所指向的内存中的值不能被改变。...可变对象,该对象所指向的内存中的值可以被改变。变量(准确的说是引用)改变后,实际上是其所指的值直接发生改变,并没有发生复制行为,也没有开辟新的出地址,通俗点说就是原地改变。...Python中,数值类型(int和float)、字符串str、元组tuple都是不可变类型。而列表list、字典dict、集合set是可变类型。 还是看代码比较直观。...如果是可变对象add = aee,它们指向同一地址(id相同)是肯定的。但不是同一对象的不同引用,因为如果是的话,aee的改变会引起add的改变,再tuple中并不是这样。...这在想使用列表的值又不想修改原列表的时候特别有用。

    1.3K50

    Android使用Jetpack Compose开发界面的适配

    前言 Android 开发中我们普遍使用今日头条的适配框架。...今日头条方案: 基于系统将 dp 转换为 px 的公式 px = dp * density 来实现适配,通过在运行时动态修改 density 值的大小,使得修改后计算出的屏幕宽度就等于设计稿的宽度,从而使得在不同屏幕尺寸下我们都可以直接使用设计稿给出的...所以Jetpack Compose中我们也可以参考这种方式做适配。 只适配单方向 假如屏幕 长是817dp,应用只显示为横屏。...fontScale = fontScale ) ) { ContentView(appViewModel, coroutineScope, pagerState) } 只需在我们需要适配的最外层组件设置...在主题中设置 我们也可以抽取到 MaterialTheme 中,使其默认生效,进一步减少代码量。

    51010

    Java中的可变对象(Mutable)与不可变对象(Immutable)

    在本文中,我不仅将分享在 Java 中Immutable的步骤,还将讨论可变对象与不可变对象及其优缺点。这也是一个常见的 String 面试问题 ,Java 开发人员也应该意识到这一点。  ...不可变类(如 String)也可以被缓存,在 Java 中,String 被缓存在一个特殊的 String 池中,这主要是为了节省内存,并允许重复使用 String 字面量: 如何在 Java 中创建不可变类...Java 中不可变对象与可变对象的区别 以下是 Java 中可变类和不可变类之间的一些主要区别: 1. 修改 可变对象在创建后可以修改,但不可变对象在创建后不能修改。 2....线程安全 可变对象不是线程安全的,如果在多线程环境中使用,可能需要同步以避免数据损坏。另一方面,不可变对象通常是线程安全的,因为状态不能更改并且可以在多个线程之间安全共享。  3....状态更改 可变对象允许更改状态,但不可变对象的状态在创建时是固定的。 4. 使用案例 当你需要经常修改对象,或想表示状态会随时间变化的实体时,可变对象就派上用场了。

    38030

    使用 Jetpack Compose 提升 Play 商店的用户体验

    为了让 Jetpack Compose 的使用体验更上一层楼,以及了解大家对 Compose 开发、学习方面的内容需求,这里诚邀您参与 Jetpack Compose 使用情况调研, 点击这里 即刻参与调研...在分析了各种选择后,我们做出了 (在当时) 一个大胆的决定——使用当时还处于 Alpha 预览阶段的 Jetpack Compose。...开发者的工作效率 一年多来 ,我们一直在使用 Jetpack Compose 编写用户界面代码,也得益于 Jetpack Compose 让界面开发变得更加简单。...在最初的集成实验中,我们遇到了双栈问题: 在单个用户会话中同时运行 Compose 和视图类渲染非常占用内存,尤其是在低端设备上。...我们与 Jetpack Compose 团队合作,推出 LazyList 项目类型缓存 等功能,并快速进行轻量级修复,如 额外的对象分配。

    3.2K40

    Jetpack Compose for Desktop 使用过程中遇到的几个大坑

    Jetpack Compose for Desktop 使用过程中遇到的几个大坑 最近在用 Jetpack Compose for Desktop 写一些好玩的,用的时候遇到了很多大坑,在这里总结如下:...Binary distribution 无法访问 ClassLoader Resources 我们有时候一定会希望从 jar 内部读取资源,这个时候我们一般会使用 this::class.java.getResource...@See https://github.com/JetBrains/compose-jb/issues/2011 错误的使用二进制流方式从 ClassLoader Resources 中加载字体导致界面整体卡顿...FontStyle.Normal ): Font = LoadedFont(identity, data, weight, style) 然而当你试图从 ClassLoader Resources 中传入字体的二进制流时...在导出 SVG 图片时不要将样式导出到 CSS,而是选择内联 (inline) 样式 2.

    2.6K30

    安卓软件开发:使用Jetpack Compose实现 NimWebViewApp

    在这篇文章里,我分享一个用 Jetpack Compose、Material3和 Kotlin 语言实现使用Jetpack Compose和Kotlin开发NimWebViewApp的加载和操作的案例。...一、项目背景 本文展示如何使用 Jetpack Compose 中的 AndroidView 加载 WebView,处理页面的加载状态和返回导航操作。...(2)下拉刷新:使用 SwipeRefresh 实现下拉刷新功能,可以在页面上拉时重新加载当前的网页。...(3)WebView:通过 AndroidView WebView 集成到 Jetpack Compose 中,启用了 JS 功能,大多数现代网站可以正常加载。...4.2 返回操作的管理 WebView 自带页面导航功能,可以在多个页面之间跳转,通过 BackHandler 检测是否可以返回到上一页面,结合 Compose 的导航功能,确保用户能够正常使用返回键

    47370
    领券