当前位置:首页>安卓APP>什么是安卓Compose(声明式UI)编程

什么是安卓Compose(声明式UI)编程

  • 2026-11-10 10:12:53
什么是安卓Compose(声明式UI)编程

安卓应用的开发技术更新非常快,常常让人难以跟上其更新的步伐。2023年安卓开发采用了Compose(声明式UI)编程技术,让安卓应用界面开发,从XML文件转向了代码生成的方式。

目前关于Compose最新编程技术介绍的书籍比较少,很多安卓编程书籍都是在此之前的技术。其中销量比较大的书籍《第一行代码(第三版)》为2020年出版书籍,这本书当中介绍了安卓应用开发新技术Kotlin,但仍未涉及Compose编程。可见安卓应用开发技术的更新速度是非常快的。

最新的Compose编程技术,与华为鸿蒙应用开发的技术是非常相似的。曾有一段时间接受了华为鸿蒙应用开发的网络培训。在我看来二者的界面开发都是采用声明式UI的设计方法。

目前关于Compose编程方法的有关学习资料较少,一方面只能从Google本身发布的教学资料中获得;另一方面,可以充分地利用AI进行解读和学习。

我在制作APP时,充分地利用了AI进行解释和代码生成。要真正地达到熟练的应用的程度,还需要更多的学习和实践。

Compose编程,以称之为声明式UI编程,其核心是,用 Kotlin 函数直接描述 UI 应该是什么样,然后相应的状态变化,会引起UI自动刷新,由系统框架智能处理界面更新。与传统的界面编程相比,不再是先用XML写布局,然后再在代码中操控控件。

Compose编程包括四个方面的内容:基础布局组件、Modifier修饰符、状态驱动与重组、可组合函数。

一、 基础布局组件

包括以下一些:

Column:垂直线性布局(类似 LinearLayout vertical)

Row:水平线性布局(类似 LinearLayout horizontal)

Box:层叠布局(类似 FrameLayout)

在安卓应用界面设计中,由以上几种基础布局组件确定界面的大体布局,如最外层为Box,内层再套一个Column布局,最里面再套几个Row布局,那些基本的界面元素就放在这些布局之中。直接在代码中给出界面布局和元素,不再由XML文件给出其界面布局和元素。

示例代码如下:

@ComposablefunUserInfo() {    Row(verticalAlignment = Alignment.CenterVertically) {        Image(...)        Column {            Text("张三")            Text("Android 工程师")        }    }}

二、Modifier修饰符。

该修饰符主要用来描述布局的相关属性,如设置内部布局元素样式、点击事件、元素边距、元素背景等。可以理解Modifier修饰符是用来修饰和限制上述的布局相关属性。

示例代码如下:

Text(    text = "Compose",    modifier = Modifier        .padding(16.dp)    // 内边距        .fillMaxWidth()    // 宽度填充        .background(Color.LightGray) // 背景        .clickable { }     // 点击事件        .border(1.dp, Color.DarkGray) // 边框)

三、 状态驱动与重组

包括以下三个方面:

1、State(状态):UI依赖的数据。用mutableStateOf()创建可观察状态。也既是将变量的取值状态和界面的显示变化进行关联,当变量的取值发生变化时,界面会自动地进行刷新。

2、remember:缓存状态,避免重组时丢失。

3、重组:状态变化时,Compose 仅重新执行依赖该状态的函数,高效局部更新。

示例代码如下:

@ComposablefunCounter() {    // 定义状态    val count = remember { mutableStateOf(0) }    Column {        Text("计数:${count.value}") // 读取状态        Button(onClick = { count.value++ }) { // 修改状态            Text("加一")        }    }}

四、可组合函数

用@Composable注解标记的函数,描述一块UI。上述的基础布局组件、Modifier修饰符、状态驱动与重组等内容,都放在可组合函数中。

可组合函数具有以下一些特性:

首字母大写(PascalCase)

无返回值(Unit)

可嵌套、可复用、可组合

只能在其他 @Composable 函数中调用

示例代码如下:

@ComposablefunGreeting(name: String) {    Text(text = "Hello $name!") // 调用系统组件}

使用Compose编程,便能在最新的Android Studio设计出自己理想的界面。当然,也可以使用AI自动生成相关界面代码,这样更加快速和方便。但也需要能读懂相关代码,并进行修改和完善。

以上是关于Compose编程的一些介绍,希望能提供一些帮助。

最新文章

随机文章