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

Jetpack ComposeCompose使用Navigation导航

前言 大约在一年半前,我发布了Compose的第一篇文章 Jetpack Compose开篇 之 HelloWorld,连我自己也没想到,这一年半的时间中我竟再也没有看过Compose..., 如今Compose...已经发布了稳定版本,还没学会Compose让我的头发又白了许多~ 使用NavigationCompose中导航 如果你之前不喜欢Android提倡的”单Activity“应用,那么Compose相信你会慢慢习惯的...页面2调用popBackStack方法将当前页面出栈便又回到了页面1,这里就不贴页面2的代码了。...age={age}”,由于可选参数必须要设置一个默认值,这里设置年龄的默认值为30,现在 页面1的点击事件不再传递年龄参数 navController.navigate("${RouteConfig.ROUTE_PAGETWO...总结 除此之外,Navigation  Compose还支持深层链接等,关于Compose的更多用法,欢迎持续关注我~

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

谷歌大佬强势分享《Jetpack Compose 权威指南》,带你参透声明式UI的终极奥义!

如果你想 Kotlin 一把梭,只是学习尝鲜,结合 Jetpack Compose 可以很好的作为你的技术储备。...是的,这些东西我们依然 Compose 运用,从而降低我们的上手难度。...目前,能够直接在 Compose使用Jetpack 库有:Navigation、Paging、ViewModel、LiveData、hilt 、lifecycle 理论上来讲,Android Jetpack...上跟 UI 不相关的库 Compose 应该都是支持的,我写的Hoo,就使用了Paging、Navigation、ViewModel和LiveData等 Android Jetpack 库,再有协程和...谷歌官方的 《Jetpack Compose 使用前后对比》 一文说道:Tivi应用在使用Compose 后,我们发现 APK 大小缩减了 41%,方法数减少了 17%。

4.1K30

Android Compose开发

可组合函数是一种特殊的函数,不需要返回任何 UI 元素,因为可组合函数描述的是所需的屏幕状态,而不是构造界面 widget;而如果按我们以前的 XML 编程方式,必须在方法返回 UI 元素才能使用它(...: runtime-livedata: 1.5.1" } 传统 LiveData 的用法 Compose 并不好使,因为传统 LiveData 依赖于监听某个值的变化,并对相应的界面进行更新,而 Compose...Compose 的一个函数,用于协程执行副作用操作。...通常使用简单的数据类对象作为参数,例如 key1 = Unit。 LaunchedEffect 的代码块,你可以执行各种需要在后台进行的操作,例如网络请求、数据库访问、文件读写等。...然后使用 cachedIn () 函数,将流缓存在 viewModelScope ,以便在组件重新合成时保留数据状态

22110

【建议收藏】Jetpack Compose编程知识全汇总 (含详细实例讲解)

以下三种方式可初步体验: 尝试使用Jetpack Compose 示例应用 创建支持Jetpack Compose 的新应用 现有项目中支持Jetpack Compose 基于现状,我主要介绍第三种方式...`widthDp: Int`: Compose渲染的最大宽度,单位为dp。 8. `heightDp: Int`: Compose渲染的最大高度,单位为dp。...Compose 如果想使用Compose的情况下,又不想迁移整个应用,可以xml里面增加ComposeView,类似于占位符,然后Actviity/fragment寻找该控件并调用setContent...的Android View 如果碰到Compose环境,想要使用Android的View视图的情况,只需要使用AndroidView函数即可 @Composable fun CustomView...() ComposeLiveData.observeAsState()获取的State对象赋值给Text @Composable fun HelloScreen(helloViewModel:

6.2K60

写给初学者的Jetpack Compose教程,使用State让界面动起来

让界面动起来 其实让界面动起来这个说法并不是非常准确,因为我们 写给初学者的Jetpack Compose教程,基础控件和布局 这篇文章中学到的进度条控件,它本来就是一直在运动的。...事实上,remember和mutableStateOfComposable函数几乎永远都是配套使用的。...这个方案之前View系统中就被广泛使用Compose当中也仍然有效。我们稍后就会讲解如何在Compose使用ViewModel。...而状态提升就是这种单向数据流模式Compose的具体应用。 关于状态提升最后还有一个问题。既然我们可以将状态提升到上一层,那么是不是还可以再往上提一层,再往上呢?提到哪一层才能算结束?...但是传统LiveData的用法Compose并不好使,因为传统LiveData依赖于监听某个值的变化,并对相应的界面进行更新,而Compose的界面更新则依赖于重组。

69120

Jetpack-Compose 学习笔记(五)—— State 状态是个啥?又是新概念?

没错,都是使用的观察者模式。 Compose 的文档,ViewModel 被推荐为 State状态的管理对象,从而实现将数据与界面展示的 Activity 分离解耦的目的。...ViewModel 经常与 LiveData 一起使用,但在 Compose ,推荐使用 MutableState 来具体存储数据的值。...如果项目不是纯 Compose 代码,建议还是用 LiveData,因为 LiveData 是通用的,而 MutableState 是与 Compose 集成了,所以 Compose使用 MutableState...6.4 ListSaver MapSaver 需要自己去定义 Key 值,但使用 ListSaver 就可以不用自己定义 Key,本质上是把对象放在一个 List 存储,所以它是使用索引作为 Key。...参考文献 官方文档——Jetpack Compose使用状态 https://developer.android.google.cn/codelabs/jetpack-compose-state

2K30

深入详解 Jetpack Compose | 优化 UI 构建

本系列的两篇文章,我们将阐述 Compose 的优势,并探讨它背后的工作原理。作为开篇,本文中,我会分享 Compose 所解决的问题、一些设计决策背后的原因,以及这些决策如何帮助开发者。... Jetpack Compose 的世界,由于我们使用函数替代了类型,因此实现组合的方法颇为不同,但相比于继承也拥有许多优点,让我们来看一个例子: 假设我们有一个视图,并且我们想要添加一个输入。...另一方面,Composable 函数可以管理和创建状态,然后将该状态及它接收到的任何数据作为参数传递给其他的 Composable 函数。...它接收了 LiveData 作为参数并调用了 Compose 的 observeAsState 方法。...observeAsState 方法会把 LiveData 映射为 State,这意味着您可以函数体的范围使用其值。

1.3K20

Android Compose 新闻App(二)ViewModel、Hlit、数据流

五、源码 前言   在上一篇文章我们构建了网络框架了,现在可以页面通过liveData的Observe回调中看到网络数据的返回。...正文   Compose组件和Jetpack其他的组件可以很有效的结合起来,会使我们的程序解耦的更彻底。...下面来使用它们吧 一、添加依赖 添加依赖有两个部分,一个是Hilt的,一个是ViewModel。 ① 添加Hilt依赖   首先是项目的build.gradle,先定义Hilt的版本。...其中每个扩展程序都由不同的工件提供: LiveData.observeAsState() 包含在 androidx.compose.runtime:runtime-livedata:$composeVersion...下一篇文章,我们将使用Compose显示UI数据。 五、源码 GitHub:GoodNews CSDN:GoodNews_2.rar

1.3K40

Jetpack Compose开篇 之 HelloWorld

我们是Activity编写Java/Kotlin的代码,xml编写布局代码,这种方式是我们已经使用了很久的方式,而Jetpack Compose完全抛弃了之前的方式,新创造了一种“使用代码”编写页面的方式...Jetpack Compose HelloWorld 新建项目 使用Compose我们需要下载Android studio4.2的最新预览版本,我们可以直接新建一个Compose项目,也可以已有项目中添加配置...,所有的组合函数 都要使用@Composable注解 ,conposable注释可告知 Compose 编译器,此函数需要转化为页面显示,并且和协程suspend函数一样,只能在compose注解函数调用另外一个...compose注解函数,@Preview注解是方便开发者不运行的前提下可预览效果,也就是说DefaultPreview这个函数是开发者自己用的,onCreatesetContent包含的是页面的内容...Greeting这个函数,接收一个string类型的name参数,并显示Text上,这里要注意的是 这里的Text组件和原生的TextView并没有关系,同样的方法我们自定来定义一个HelloWorld

1.8K20

Android Dev Summit 21 精彩内容盘点

,这也反映出 Android 将 Compose 作为首选的 UI 解决方案的决心。...基于 Jetpack 的 lifecycle-ktx 扩展库 Flow 可以转变为一个 lifeycle-aware 组件,较好地替代现有的 LiveData使用场景。...你可以只 Model 层使用 Flow, View 层仍然使用 LiveData,通过 Flow.asLiveData 将 Flow 转换为 LiveData: // import androidx.lifecycle.asLiveData...活动期间有网友直播询问是否还有 Flow 无法取代 LiveData 的场景,官方的回答是 LiveData 除了 API 更简单以外(相应的功能也比较弱),已经完全可以被 Flow 替代。...比如未来的 App 可能需要适配更多而屏幕尺寸、Jetpack Compose UI 开发上的先进性正逐渐凸显;Kotlin Flow 对 LiveData 以及 WorkManager 对 Service

1.7K20

Jetpack ComposeMVVM的实现及ViewModel和remember对比

用法: ViewModel: 通常通过 Activity 或 Fragment 中使用 ViewModelProvider 获取 ViewModel 实例,并在需要时观察 ViewModel LiveData...remember/rememberSaveable Compose,remember和rememberSaveable都是用于保存可组合函数状态的方法,但它们如何保存状态以及什么情况下会重新计算状态上有所不同...remember: 这个函数组合函数的生命周期内始终保持相同的状态。这意味着,每次组合函数重新调用时,它都会使用先前保存的状态值,而不会重新计算它。...mutableStateOf/mutableStateListOf mutableStateOf 是 Jetpack Compose 的一个函数,用于创建可变的状态。...总的来说: mutableStateOf 的作用是 Jetpack Compose 创建可变的状态,以便动态更新 UI,并确保 UI 反映最新的状态值。

54910

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

Jetpack Compose for Desktop 使用过程遇到的几个大坑 最近在用 Jetpack Compose for Desktop 写一些好玩的,用的时候遇到了很多大坑,在这里总结如下:...@See https://github.com/JetBrains/compose-jb/issues/2011 错误的使用二进制流方式从 ClassLoader Resources 中加载字体导致界面整体卡顿...FontStyle.Normal ): Font = LoadedFont(identity, data, weight, style) 然而当你试图从 ClassLoader Resources 传入字体的二进制流时...Notification 被忽略 我们有时候需要向操作系统发送一些通知,这个时候就必须用到 Tray(托盘),为其绑定一个 TrayState,然后调用这个 TrayState 的 sendNotification 函数...导出 SVG 图片时不要将样式导出到 CSS,而是选择内联 (inline) 样式 2.

2.4K30

Jetpack Compose Beta 版现已发布!

您可以 Android 视图中嵌入 Compose UI,并在 Compose使用视图。我们 互操作性文档 中提供了多种应用策略。...Compose 的编程思想 Jetpack Compose 是一款声明性 UI 工具包,也是当前视图系统的范式转变,您可利用此工具包声明 UI 在任何给定应用状态下的预期外观,而不是如何生成 UI。...Compose 会负责应用状态更改时更新您的 UI,这样您无需操作界面就能使其转变为预期状态,省去了繁琐的流程,并且可以避免出错。...现在时机正好,不妨开始学习 Jetpack Compose,并规划如何在接下来的项目中使用该工具包。...我们期待收到您对应用采用 Compose 的 反馈,您也可以 Kotlin Slack 的 #compose 频道参与讨论或在下方留言区和我们分享。

5.6K10

Jetpack Compose 1.0 正式发布!打造原生 UI 的 Android 现代工具包

这是 Compose 的稳定版本,可供大家在生产中使用。在过去的两年里,我们一直努力开发 Compose,并得到了 Android 社区的积极反馈和参与。...我们发布 1.0 的当下,Play Store 已经有超过 2,000 个应用在使用 Compose 了。事实上,Play Store 应用本身也使用 Compose!...您可以只屏幕上添加一个按钮,也把自己创建的自定义视图保留在现在用 Compose 打造的界面Jetpack 集成 : Compose 和大家熟知且喜爱的 Jetpack 开发库 天然整合。...文档 - 从 "Compose 编程思想" 、"状态Jetpack Compose" 以及 "架构式层级" 这样的基础话题,到核心 API 的使用指南,包括 布局、导航 和 测试,以及针对 开发者工效...我们坚信,Jetpack Compose 是一次巨大的飞跃,让我们得以更快、更轻松地打造卓越的 UI;我们非常期待看到大家使用 Compose 打造的成果。

1.8K20

使用更为安全的方式收集 Android UI 数据流

这一 API 的内部也使用 suspend Lifecycle.repeatOnLifecycle 函数实现,并会在生命周期进入和离开目标状态时发送项目和取消内部的生产者。... Jetpack Compose 安全地收集数据流 Flow.collectAsState 函数可以 Compose 收集来自 composable 的数据流,并可以将值表示为 State,以便能够更新... Compose 收集数据流时,可以使用 Flow.flowWithLifecycle 操作符,示例如下: @Composable fun LocationScreen(locationFlow:...它的代码块,如果您需要在宿主生命周期处于某个 State 时重新执行一个代码块,可以调用挂起函数 Lifecycle.repeatOnLifecycle。...纯 Kotlin 应用使用这些 API 可以十分自然地替代 LiveData 收集数据流。

88730

引入Jetpack架构后,你的App会发生哪些变化?

本文1.1 生命周期同步设计就是一个标准的观察者模式,ObserverLifecycle可作为观察者,PlayerActivity作为被观察者,当被观察者(PlayerActivity)生命周期发生改变时会主动通知到观察者...(VideoPlayer) 同时观察者不改变代码结构的情况随意扩展,比如PlayerActivity属于一个MVP架构,此时可以将Presenter实现ObserverLifecycle作为观察者 随后...2.3 LiveData + Lifecycle 实现 1 + 1 > 2 LiveDataLifecycle的加持下可以实现只可见状态接收通知,说的通俗一点Activity执行了onStop()后内部的...比如我的开源项目中的音乐播放器(属于单Activity多Fragment架构),播放页和首页悬浮都包含音乐基本信息,如下图所示: [image.png] 想要使两个Fragment播放信息实时同步,最优雅的方式是将播放状态托管...Activity作用域下ViewModel的LiveData,然后各自做状态监听,这样只有要有一方改变就能立即通知到另一方,简单又安全,具体细节可至我的开源项目中查看。

82100
领券