一、配置

https://developer.android.com/develop/ui/compose/setup?hl=zh-cn
照着官方的配置即可

二、教程

官方教程:https://developer.android.google.cn/develop/ui/compose/documentation?hl=zh-cn

基础教学:
https://cloud.tencent.com/developer/article/2378444
https://chalk.blog.csdn.net/article/details/120530249
https://cloud.tencent.com/developer/article/2453671

必须搞懂的两件事儿:UI组件和状态管理

1.常用组件

https://blog.csdn.net/qq_35460159/article/details/157031212 (详细组件分类)

📦 各层级的核心组件清单

下面是各层的主要组件,你可以对照上面的图来理解。

🎨 Material Design 层

这一层是最常用的,它提供了遵循 Material Design 3(Material You)规范的开箱即用组件,自带主题、交互和样式。

  • 按钮类Button(填充按钮)、TextButton(文本按钮)、OutlinedButton(边框按钮)、IconButton(图标按钮)、FloatingActionButton(悬浮按钮)。
  • 输入类TextField(下划线输入框)、OutlinedTextField(边框输入框)。
  • 选择与状态类Checkbox(复选框)、RadioButton(单选按钮)、Switch(开关)、Slider(滑动条)、DropdownMenu(下拉菜单)。
  • 容器类Card(卡片)、AlertDialog(对话框)、ModalBottomSheet(底部弹窗)、Snackbar(提示条)、Divider(分隔线)。
  • 导航类NavigationBar(底部导航栏)、NavigationRail(侧边导航栏)、TabRow(标签栏)、Scaffold(页面脚手架)。

🧱 基础层 (Foundation)

这一层提供与具体设计系统无关的通用构建模块,如果你想定制自己的设计系统,可以基于这层开发。

  • 布局组件Column(垂直排列)、Row(水平排列)、Box(层叠排列,类似FrameLayout)、FlowRow/FlowColumn(流式布局,自动换行)。
  • 懒加载布局LazyColumn(垂直列表)、LazyRow(水平列表)、LazyVerticalGrid(网格列表)、LazyStaggeredGrid(瀑布流)。
  • 基础功能组件Image(图片显示)、BasicText(无样式的纯文本)、BasicTextField(无样式的输入框)。

🖌️ UI 层与运行时层

这两层提供了最基础的“能力”,你通常不会直接拿它们来构建UI,但所有上层组件都依赖于它们。

  • 布局与绘制 (UI层)
    • LayoutModifier:用于自定义布局装饰组件(如设置大小、边距、背景、点击事件等)的核心工具。
    • Canvas:用于自定义绘制,类似传统View中的Canvas
    • 手势处理:通过Modifier.pointerInputModifier.draggable等实现触摸交互
  • 核心机制 (运行时层):这是Compose的基石。
    • 状态管理remembermutableStateOfrememberSaveable用于保存和管理UI状态。
    • 副作用LaunchedEffectDisposableEffect用于处理与Compose生命周期相关的操作。
    • 注解@Composable是标记所有可组合函数的“身份证”。

💡 开发建议

  1. 首选高层级组件:对于大多数开发场景,直接从Material 3层开始是最佳选择。ButtonCardScaffold等组件已经包含了无障碍、主题和最佳交互实践,能帮你省去大量工作。
  2. 按需“降级”使用:如果你需要完全定制化的设计系统,或者高层级组件无法满足你的需求,就可以考虑基于基础层UI层来构建自己的组件。例如,你想实现一个极简的、无任何样式的点击区域,BasicTextField 会比 OutlinedTextField 更合适。
  3. 理解核心机制:无论使用哪一层,理解运行时层的概念(如remember@Composable)都是必须的,它们是驱动整个Compose UI工作的引擎。

三、原理

https://segmentfault.com/a/1190000042857106

分类: compose

0 条评论

发表回复

您的电子邮箱地址不会被公开。