安卓应用的开发技术更新非常快,常常让人难以跟上其更新的步伐。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编程的一些介绍,希望能提供一些帮助。