Compose从入门到深入
文章平均质量分 92
JetPack Compose从入门到深入
氦客
Stay hungry,Stay foolish
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
Android Compose : 传统View在Compose组件中的等价物
对于刚接触Compose的Android开发者来说,最想知道的莫过于:我在传统View的界面组件,用Compose怎么来实现呢 ?原创 2026-01-14 09:51:06 · 654 阅读 · 0 评论 -
UI编程的发展史 : 结合命令式UI和声明式UI
结合命令式UI和声明式UI,讲解UI编程的发展史原创 2026-01-14 09:37:07 · 1161 阅读 · 0 评论 -
Android Compose中的单向数据流和MVI架构
单向数据流(UDF)是Android开发中的一种架构模式,强调数据单向流动:状态向下传递,事件向上触发。其核心流程包括事件触发、逻辑处理、状态更新和UI刷新,形成可预测的循环。UDF优势在于提升可测试性、确保状态一致性和界面同步。代码示例展示了状态管理、事件处理和UI更新的完整实现。UDF可扩展为更严格的MVI架构,后者通过单一不可变状态和密封类Intent进一步规范数据流。在Compose中实现MVI需要定义UI状态、处理Intent并管理副作用,适合追求高可维护性的中大型项目。原创 2025-12-12 08:49:28 · 994 阅读 · 0 评论 -
Android Compose 界面架构 : 基于单向数据流
本文介绍了Jetpack Compose中界面构建的核心逻辑——状态控制与单向数据流(UDF)模式。主要内容包括: Compose界面的不可变性决定了状态驱动更新的特性 单向数据流的实现方式:状态向下流动,事件向上传递 使用ViewModel管理状态,通过mutableStateOf、LiveData等容器实现状态观察 事件处理原则:界面层仅触发事件,由ViewModel统一处理 可组合项设计建议:参数最小化、优先使用不可变值 登录屏幕的状态建模示例,展示密封类在状态管理中的应用 该模式提升了应用的可测试性原创 2025-11-24 09:02:00 · 1298 阅读 · 0 评论 -
Android Compose 架构分层详解 : 基于基础层开发自定义组件
Jetpack Compose采用分层架构设计,包含Material、Foundation、UI和Runtime四层。Runtime层提供核心组件如@Composable注解;UI层实现基础界面功能;Foundation层包含通用组件如Row/Column;Material层实现Material Design系统。设计原则强调:1)按需降级获取更多控制权;2)通过组合小型组件实现自定义;3)优先使用高级别组件以确保功能完整性和无障碍支持。开发者可根据需求选择合适的抽象层级,在便利性和灵活性间取得平衡。原创 2025-11-24 09:01:40 · 777 阅读 · 0 评论 -
Android Compose 状态提升和状态保存
状态提升是Android Compose中管理界面状态的核心设计模式,它通过将状态从子组件移至父组件,实现状态共享和单向数据流控制。这一模式遵循"状态向下流动,事件向上触发"的原则,使状态变化可预测、组件更易测试复用。原创 2025-11-21 09:00:22 · 964 阅读 · 0 评论 -
Android Compose的编程思想 : 智能重组的声明式UI
Jetpack Compose 是 Android 声明式界面工具包,核心以可组合函数(Composable)描述界面,替代传统命令式手动操作视图的方式。颠覆了传统命令式开发逻辑 : 无需手动操控视图,只需描述界面状态,状态变化时系统会智能更新需改动部分,彻底解决传统开发的漏更、冲突、维护难等痛点。原创 2025-11-21 08:48:30 · 660 阅读 · 0 评论 -
Android Compose中LaunchedEffect、SideEffect和DisposableEffect的区别
Android Jetpack Compose提供了三种管理副作用的API:LaunchedEffect用于启动协程执行异步任务,在组件退出时自动取消;DisposableEffect用于需要资源清理的场景,必须实现onDispose清理逻辑;SideEffect则在每次重组后同步执行,适合轻量级状态同步。三者的区别体现在执行时机、协程支持和生命周期管理上,开发者应根据是否需要协程、资源清理等需求选择合适的API。文中通过计时器、传感器和埋点等典型示例,展示了各API的最佳使用场景。原创 2025-10-24 08:52:33 · 648 阅读 · 0 评论 -
Android Compose 状态的概念
本文介绍了 Jetpack Compose 中的状态管理机制。状态是指应用中随时间变化的任何值,Compose 通过声明式方式,在状态变化时触发重组来更新界面。核心是通过 remember 存储状态,mutableStateOf 实现状态可观察性。文章比较了三种声明状态的方式,推荐使用 by 委托语法。最后区分了传递值和传递状态对象的差异:传递值实现单向数据流,适合纯展示组件;传递状态对象支持双向数据流,允许子组件直接修改状态。理解这些机制有助于在 Compose 中构建响应式 UI。原创 2025-10-21 20:02:42 · 1010 阅读 · 0 评论 -
Android Compose 绘制流程 : 阶段(phases)
Jetpack Compose 通过三个阶段高效渲染界面:组合阶段生成界面树,布局阶段计算尺寸位置,绘制阶段呈现像素。其核心优势在于智能跟踪状态读取位置,仅重新执行必要的阶段。例如在绘制阶段读取颜色状态时,仅触发重绘而不重组。性能优化关键在于将状态读取放在最低必要阶段,避免无效计算。错误示例展示了在组合阶段读取滚动偏移会导致不必要的重组,应改为在布局阶段读取以提升效率。原创 2025-10-21 19:21:53 · 1024 阅读 · 0 评论 -
Android Compose 可组合项的生命周期
Jetpack Compose 的可组合项生命周期分为进入组合、重组(0次或多次)和退出组合三个阶段。Compose 通过调用点识别可组合项,重组时仅更新受状态变化影响的部分。列表场景需使用 key 避免无效重组,确保稳定性。参数类型需满足“稳定类型”(如基本类型、String、MutableState)才能跳过重组,否则即使输入未变也会触发重组。通过 @Stable 注解可标记自定义稳定类型,优化性能。原创 2025-10-16 09:03:08 · 1335 阅读 · 0 评论 -
Android Compose 显示底部对话框 (ModalBottomSheet),实现类似BottomSheetDialog的效果
ModalBottomSheet是Android Compose官方的底部对话框,类似传统View中的BottomSheetDialog,可以实现从底部弹出,并支持滑动关闭的效果。原创 2025-01-12 11:33:27 · 3334 阅读 · 0 评论 -
为什么要使用 Compose 来进行 Android 开发 ?
近年来,以React为代表的声明式UI开发思想席卷了整个前端开发领域。客户端与前端在产品形态上非常相似,也希望借鉴这种全新的开发思想来提升客户端UI的开发效率和体验。在这个大背景下,Android与iOS平台相继发布了自己的声明式UI开发框架。而在Android中的明式UI开发框架就是Compose原创 2022-12-25 20:40:37 · 3651 阅读 · 5 评论 -
Compose 和 Android 传统View 互相调用
Compose具有超强的兼容性,兼容现有的所有代码,Compose能够与现有View体系并存,可实现渐进式替换。今天,我们就来演示一下,Compose和Android View怎么互相调用,以及在双层嵌套(原生View嵌套Compose,Compose中又嵌套原生View)的情况下,在最外层原生View中,怎么获取到Compose内部的原生View。原创 2022-12-18 17:54:52 · 6059 阅读 · 7 评论 -
Android Compose Column列表 数据更新列表不刷新的问题
我们都知道,Compose可以使用mutableStateOf进行双向绑定,改变值之后,就可以改变UI。但是如果是使用Column/Row/LazyColumn/LazyRow列表的时候,无论怎么更新数据,界面都不会刷新,这是为什么呢 ? 本文提供了解决方案及原理说明。原创 2022-10-22 13:59:00 · 4282 阅读 · 1 评论 -
Android JetPack Compose 入门
JetPack Compose 是一个适用于Android的新式声明性界面工具包。过去几年中,整个行业已开始转向声明性界面模型,该模型大大简化了与构建和更新界面关联的工程设计。创建 JetPack Compose项目首先,我们要先下载Android Studio Canary版本然后,新建项目中,选择Empty Compose Activity,就会创建JetPack Compose项目了创建项目后,我们可以看到MainActivity中的代码是这样的class MainActivity :原创 2021-05-08 15:23:18 · 1407 阅读 · 7 评论
分享