Jetpack系列之Compose(一)

226 阅读3分钟

持续创作,加速成长!这是我参与「掘金日新计划 · 6 月更文挑战」的第3天,点击查看活动详情

什么是compose

jetpack compose 是 Google 推出的现代 Android UI 工具包。它简化了应用程序开发过程并加快了速度。与当前的视图构建方法相比,使用 Jetpack Compose,您可以编写更少的代码——这也意味着更少的潜在错误。它还有一件很棒的事情——它使用了 Kotlin。如果您一直在使用 React 或 Flutter,您可能会熟悉这个概念并发现许多相似之处。

如何工作

Compose 的主要构建块是 Composable 函数。它发出用户界面的一部分。使用 Compose 构建是关于将 Composable 函数相互嵌套。

@Composable
fun create(){
	Column{
		Text("第一个")
		Text("第二个")
		Text("第三个")
	}
}

声明式方法

Jetpack Compose 建立在不同的编程范式之上。它使用声明性范例。简而言之,就是要把你的思维方式从 “怎么做” 转变为 “我要达到什么目标” 。在声明性的编程方式中,您尝试描述预期的结果,而不是描述实现目标的每一步。在前面的示例中,我们只是说“我想要一个包含三个文本的列”——仅此而已。我们不需要编写任何额外的代码来告诉应用程序如何处理内的项目。

在当前的命令式方法中,事情有点复杂。为了呈现元素列表,使用了 RecyclerView。它是一个有助于有效显示大量数据的组件。问题是每个 RecyclerView 都需要一个适配器,列表中的每个项目都需要一个 ViewHolder,等等。适配器是程序员必须描述 RecyclerView 将如何渲染每个元素的地方。而且如果我们要渲染不同类型的数据,可能会有点混乱。例如,如果您想显示文本、图像和自定义扩展视图,则必须编写一个逻辑来告诉 RecyclerView 如何执行此操作。所以这样它就有点复杂,这种方式与 Jetpack Compose 和声明性方法完全相反。毕竟,我们只想创建一个包含一些元素的列表。

@Composable
fun create(){
	Column{
		Text("第一个",modifier=Modifier.padding(8.dp))
		Image(
    painter = painterResource(id = R.drawable.icon_res),
    contentDescription = "logo",
    modifier = Modifier
        .width(111.wdp)
        .height(19.hdp)
       	)
		MyCustomView(modifier=Modifier.padding(8.dp))
	}
}

Kotlin编写Compose

Jetpack Compose 的最大优势之一是它使用 Kotlin。这对你意味着我们可以使用kotlin的语言特性,例如,您可以直接在视图代码中使用所有 Kotlin 结构。您可以使用 If 语句来选择应该呈现的内容,并且可以使用for循环多次显示视图。您还可以使用filter、map等功能方法。

@Composable
fun create(){
	if(isShow){
        Column{
            Text("a")
        }
	}else{
        [1,2,3].filter{ it == 1}.map{
            Text(it)
        }
    }
	
}

总结

Jetpack Compose 是一个很有前途且功能强大的现代 UI 工具包,您绝对应该关注它。如果使用得当,它可以加快开发过程并减小应用程序的大小。此外,使用 Compose,您可以编写更少的代码——这可能意味着更少的错误。快乐编码🙂

如果想了解更多,请查看 [Compose 官网](https ://developer.android.com/jetpack/compose)