Android compose初探

AndroidCompose是Google推出的声明式UI框架,自2019年I/O大会公布以来,历经多个预览版,最终在2021年发布稳定版。它简化了Android应用开发,将UI描述为数据转换为视图的函数。主要组件包括Text、TextField、Button、Image等,布局组件如Column、Row、Box,以及LazyColumn、LazyRow等列表和网格组件,为开发者提供了更高效、简洁的编程体验。

Android Compose

  1. 简介

Compose是从2019年5月Google在I/O大会上公布,在2020年9月发布第一个Alpha版本,2021年2月发布第一个bate版本。Compose 是一个现代化的UI工具包,帮助开发者在原生平台API简单快捷的构建android应用。
Compose 使用的编程模型与现有的构建UI的模型完全不同,Compose 是一个完全基于声明式组件方法,将UI描述为 数据转换为UI层次结构函数。如果学习过flutter的会发现与Compose很相似。

  1. 主要组件
    1. Text 对应xml中的 textView
    2. TextField 对应xml 中的 EditText
    3. button 对应xml 中的 button
    4. image 对应xml 中的imageView

  2. 布局组件

    1. Column 竖向线性布局
    2. Row 横行线性布局
    3. Box 帧布局
  3. 列表组件

    1. LazyColumn 竖向列表
    2. LazyRow 横行列表
    3. LazyVerticalGrid 网格列表
Android Compose 里,`AndroidView` 是一个重要的组件,它能让开发者在 Compose 界面中嵌入传统的 Android View 系统的视图。 ### 使用指南 - **基本使用**:`AndroidView` 可将传统的 Android View 嵌入到 Compose 布局中。其核心参数为 `factory`,该参数是一个 lambda 表达式,用于创建传统的 Android View。 - **更新视图属性**:若要更新视图的属性,可使用 `update` 参数。此参数也是一个 lambda 表达式,会在每次重组时被调用,可在其中更新视图的属性。 - **生命周期管理**:`AndroidView` 会自动管理嵌入视图的生命周期,确保视图在合适的时间创建、更新和销毁。 ### 相关示例 以下是一个简单的示例,展示如何在 Compose 中使用 `AndroidView` 嵌入一个 `TextView`: ```kotlin import android.widget.TextView import androidx.compose.runtime.Composable import androidx.compose.ui.viewinterop.AndroidView @Composable fun TextViewInCompose() { AndroidView( factory = { context -> // 创建一个 TextView TextView(context).apply { text = "Hello from TextView in Compose" } }, update = { textView -> // 可在此更新 TextView 的属性 textView.textSize = 20f } ) } ``` 下面是一个更复杂的示例,在 Compose 中嵌入一个 `ImageView`,并动态更新其图片资源: ```kotlin import android.widget.ImageView import androidx.compose.foundation.layout.size import androidx.compose.runtime.getValue import androidx.compose.runtime.mutableStateOf import androidx.compose.runtime.setValue import androidx.compose.ui.Modifier import androidx.compose.ui.unit.dp import androidx.compose.ui.viewinterop.AndroidView @Composable fun ImageViewInCompose() { var imageRes by mutableStateOf(R.drawable.sample_image) AndroidView( factory = { context -> // 创建一个 ImageView ImageView(context).apply { setImageResource(imageRes) } }, update = { imageView -> // 更新 ImageView 的图片资源 imageView.setImageResource(imageRes) }, modifier = Modifier.size(200.dp) ) } ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

paterWang

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值