前言:
继上一章初识Jetpack之后,我们继续来讲Compose的设计原理和基本概念
第⼆章 Compose的设计原理和基本概念
2.1 JetPack Compose 环境搭建
可以看到IDE已经帮我们构建了⽣成Compose的选项。
gradle 配置
1)在app⽬录下的build.gradle 中将app⽀持的最低API 版本设置为21或更⾼,同时开启Jetpack Compose enable开关,代码如下:
- 添加Jetpack Compose⼯具包依赖项
在app⽬录下的build.gradle添加Jetpack Compose ⼯具包依赖项,代码如下:
implementation “androidx.compose.ui:ui: c o m p o s e v e r s i o n " / / M a t e r i a l D e s i g n i m p l e m e n t a t i o n " a n d r o i d x . c o m p o s e . m a t e r i a l : m a t e r i a l : compose_version" //Material Design implementation "androidx.compose.material:material: composeversion"//MaterialDesignimplementation"androidx.compose.material:material:compose_version”
// Tooling support (Previews, etc.)
implementation “androidx.compose.ui:ui-tooling- preview:$compose_version”
implementation ‘androidx.activity:activity-compose:1.3.0-alpha06’ // Foundation (Border, Background, Box, Image, Scroll, shapes, animations, etc.)
implementation(“androidx.compose.foundation:foundation:1.0.1”)
2.2 JetPack Compose
你有没有想过为什么Google要设计⼀套新的框架 ,我们不是有View和ViewGroup吗?Android发展有10年的时间了,之前的技术在构建新的⽤户需求的时候会捉襟见肘,开发⼈员需要有新的⼯具来完成UI的编程 。另外之前的View的代码已经很冗余了, Google也不希望在之前的代码上继续维护(或者说是污染代码、 修改代码)所以这是Compose的出来的缘 由。
总结来说:Compose的优势
紧密结合Kotlin,可以利⽤现代化编程语⾔的魅⼒(⾼阶函数、各种函数新特性)提⾼声明式UI开发效率结合最新的IDE可以进⾏实时预览、动画执⾏等功能Jetpack Compose 为我们提供了很多开箱即⽤的Material 组件,还有很多等你体验。
需要注意的地⽅,Runtime和Compile2个组件, 尤其是Complier完成Compose的编译和 中间结果的输出。Ui和material完成了Compose组件最核⼼的界⾯的展⽰ 。
2.3 JetPack Compose
Compose需要解决的问题是关注点分离 。强内聚低耦合。设计思想来说,java语⾔更多的是 使⽤继承 ,Kotlin推荐我们使⽤组合。组合可以增加⾃由度、解决java当中单个⽗类限制。
Jetpack Compose 是⼀个适⽤于 Android 的新式声明性界⾯⼯具包。 Compose 提供声明性 API,让您可在不以命令⽅式改变前端视图的情况下呈现应⽤界⾯,从⽽使编写和维护应⽤ 界⾯变得更加容易。
- 声明性编程范式
- 可组合函数 ( @Composable函数)
声明性范式转变 (在 Compose 的声明性⽅法中, 微件相对⽆状态,并且不提供 setter 或 getter 函数。)
经典素材阅读:
/**
- Display a list of names the user can click with a header /
@Composable
fun NamePicker(
header: String, names: List, onNameClicked: (String) -> Unit
) {
Column {
// this will recompose when [header] changes, but not when
[names] changes
Text(header, style = MaterialTheme.typography.h5)
Divider()
// LazyColumnFor is the Compose version of a RecyclerView. // The lambda passed is similar to a RecyclerView.ViewHolder. LazyColumnFor(names) { name ->
// When an item’s [name] updates, the adapter for that
item
// will recompose. This will not recompose when [header]
changes
NamePickerItem(name, onNameClicked)
}
}
}
/* - Display a single name the user can click. */
@Composable
private fun NamePickerItem(name: String, onClicked: (String) -> Unit)
{
Text(name, Modifier.clickable(onClick = { onClicked(name) }))
总结
其实要轻松掌握很简单,要点就两个:
- 找到一套好的视频资料,紧跟大牛梳理好的知识框架进行学习。
- 多练。 (视频优势是互动感强,容易集中注意力)
你不需要是天才,也不需要具备强悍的天赋,只要做到这两点,短期内成功的概率是非常高的。
对于很多初中级Android工程师而言,想要提升技能,往往是自己摸索成长,不成体系的学习效果低效漫长且无助。下面资料部分截图是我花费几个月时间整理的,诚意满满:特别适合有3-5年开发经验的Android程序员们学习。扫描下方二维码即可获取全部资料
![](https://hnxx.oss-cn-shanghai.aliyuncs.com/official/1677570704663.png?t=0.6649886667678724)