
Compose
文章平均质量分 67
消失的旧时光-1943
来自苏州的程序员:
pmp 认证/Scrum Master 认证/ 腾讯TRTC认证 。
喜欢爬山,喜欢编码,喜欢物联网,喜欢做一些有意义的事。
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
Compose Canvas 中添加手势控制
本文详细介绍了如何在Jetpack Compose中利用Canvas和手势控制创建交互式绘图应用。主要内容包括:1)基础手势集成,通过detectDragGestures、detectTransformGestures实现拖拽、缩放和旋转;2)复杂交互实现,如拖拽绘制对象和视图变换;3)手势控制绘图应用开发,包括路径绘制和状态管理;4)手势控制图表交互的实现方法;5)高级技巧包括手势冲突解决、性能优化和形状识别。文章强调通过mutableStateOf管理状态,使用drawWithCache优化性能,并演示原创 2025-06-15 12:03:25 · 360 阅读 · 0 评论 -
Jetpack Compose Canvas 深度解析
Jetpack Compose的Canvas组件采用声明式方式实现2D绘图,支持绘制基本形状(矩形、圆形、线条等)、路径(贝塞尔曲线)、图像和文本,并提供坐标变换、渐变填充等高级功能。开发者可通过DrawScope扩展函数复用绘图逻辑,结合动画系统实现动态效果。最佳实践包括:避免绘制块内创建对象、使用drawWithCache优化性能、限制重绘区域。Canvas还支持构建交互式绘图板,通过手势检测实现用户绘制功能。该组件既保留了传统Android Canvas的核心能力,又融合了Compose的响应式特性,原创 2025-06-15 11:44:04 · 267 阅读 · 0 评论 -
Jetpack Compose -> pointerInput 处理手势的核心
/ 实现滑动方向检测drag?.let {when {horizontal -> println("水平滑动")vertical -> println("垂直滑动")原创 2025-06-15 11:32:43 · 562 阅读 · 0 评论 -
val viewModel: CounterViewModel = viewModel() 和 val myViewModel = viewModel<XXXViewModel>() 什么区别
在 Jetpack Compose 中,和本质上是,只是写法上的差异。它们的核心作用都是。原创 2025-06-09 11:43:02 · 369 阅读 · 0 评论 -
Jetpack Compose 与 ViewModel 的完美结合
ViewModel 作为状态容器:管理 UI 状态和业务逻辑响应式状态更新:使用 StateFlow/LiveData + collectAsState 实现自动刷新单向数据流:确保状态变化的可预测性和可维护性生命周期感知:自动处理配置更改和资源清理依赖注入支持:通过 Hilt 简化依赖管理遵循这些模式和实践,你可以构建出结构清晰、可维护且高效响应的 Compose 应用。原创 2025-06-09 11:40:11 · 961 阅读 · 0 评论 -
Jetpack Compose 中的 produceState 详解
produceState是Jetpack Compose管理异步状态的核心API,它能将非Compose状态转换为可观察状态。主要特点包括:在组合中启动协程作用域、自动生成可变状态、管理协程生命周期。典型应用场景包括:异步数据加载(配合密封类处理不同状态)、Flow数据收集、定期刷新数据(如股票行情)和监听外部事件(如位置更新)。最佳实践建议使用key参数跟踪依赖项变化,配合ViewModel分离逻辑,并通过awaitDispose清理资源。相比remember,produceState内置协程支持,更适合原创 2025-06-09 11:07:55 · 394 阅读 · 0 评论 -
compose 组件 ---无ui组件
Jetpack Compose中存在多种不参与UI渲染但功能重要的组件,主要包括状态管理组件(如remember、ViewModel)、副作用处理器(如LaunchedEffect、DisposableEffect)、布局逻辑组件和纯逻辑组合函数。这些无UI组件实现了业务逻辑与UI渲染的解耦,提高了代码复用性和可测试性。典型应用包括状态托管和副作用封装,相比传统开发方式更简洁高效。使用时需注意避免过度拆分和性能优化,合理运用这些组件能构建更清晰的Compose应用架构。原创 2025-06-07 22:48:16 · 658 阅读 · 0 评论 -
Jetpack Compose 中,DisposableEffect、LaunchedEffect 和 sideEffect 区别和用途
Jetpack Compose中处理副作用的核心API对比:LaunchedEffect用于协程任务,自动取消;DisposableEffect管理需清理的资源,需手动释放;SideEffect适用于重组后的状态同步。三者分别针对异步操作、资源释放和状态更新场景,开发者应根据需求选择合适API以避免性能问题和内存泄漏。关键区别在于触发时机和清理机制,合理使用能有效管理Compose组件中的副作用。原创 2025-06-07 21:21:35 · 1075 阅读 · 0 评论 -
Jetpack Compose 中更新应用语言
本文介绍了在Jetpack Compose应用中实现多语言切换的完整方案。核心是通过LocaleManager管理语言设置,结合Composable函数和基础Activity扩展,实现语言状态持久化与动态更新。方案包含:1) 语言管理工具类处理配置变更;2) 可组合函数管理语言状态;3) 自定义LocaleAwareComponentActivity;4) 主题包装器确保UI更新。关键点包括:需要重启Activity完全刷新资源、处理不同API版本兼容性、动态文本适配及性能优化。该方案融合传统Android原创 2025-05-25 20:25:39 · 608 阅读 · 0 评论 -
Jetpack Compose 导航 (Navigation)
Jetpack Compose导航提供现代化解决方案,完全基于Composable函数构建。核心包括:1)创建NavController和定义导航图;2)支持基本导航、参数传递和返回操作;3)提供深层链接、底部导航集成等高级功能;4)推荐使用密封类管理路由,避免直接传递复杂对象。相比传统Fragment导航,Compose导航更简洁直观,消除了生命周期复杂性,所有界面均为Composable函数,便于维护。最佳实践包括合理管理路由状态、处理返回逻辑以及在目标间共享ViewModel。原创 2025-05-25 13:46:31 · 513 阅读 · 0 评论 -
Compose 中的 LaunchedEffect
LaunchedEffect是Jetpack Compose中处理协程副作用的关键函数,它会在组合变化时自动启动/取消协程。该函数允许在可组合项内部执行挂起操作,与组件生命周期绑定,特别适用于动画控制、一次性操作和状态变化响应等场景。通过key参数控制协程的重启条件,使用Unit作为key可实现单次执行。当组件退出组合或key变化时,关联协程会自动取消,确保资源安全释放。原创 2025-05-24 21:27:46 · 460 阅读 · 1 评论 -
Compose 父子组件的通信
在Jetpack Compose中,父子组件之间的通信常通过函数参数实现。以下是两种常见函数类型的区别:() -> Boolean:子组件调用该函数并获取返回值。父组件通过返回值了解子组件的状态或执行结果。例如,handleBack 函数无参数,返回 Boolean,子组件调用后获取结果。(Boolean) -> Unit:子组件调用该函数并传入 Boolean 值。父组件接收值并执行相应逻辑,无需返回值。例如,handleBack 函数接收 Boolean 参数并处理,子组件原创 2025-05-12 10:03:50 · 234 阅读 · 0 评论 -
Compose 中使用 WebView
回退到原生 AndroidView 实现。原创 2025-05-05 21:05:17 · 1631 阅读 · 0 评论 -
协程补充---viewModelScope 相关知识点
• • 使用 remember 可以确保在 queueMenus 没有变化时保持相同的引用。• • { queueMenus } 是计算块,返回要记住的值。原创 2025-05-05 19:53:00 · 353 阅读 · 0 评论 -
Compose 的产生和原理
compose 出现的目的: 重新定义android 上ui 的编写方式。原创 2025-03-18 20:33:51 · 532 阅读 · 0 评论