Jetpack compose入门
简介:什么是Jetpack compose
jetpack compose是谷歌新一代开发框架,采用kotlin为基础语言,在ui设计方面,摈弃了传统的用xml来描述界面的方式,而采用代码来描述,这被称为声明式UI
学习路线:给有Java基础的朋友
声明:以下学习路线是我在自学jetpack compose开发app时摸索出来的,不保证是最好的方式,但我认为这是一种既能保证快速入门又能打好基础的方式
第一阶段:打好基础,了解学习方法
- 复习java基础,主要是抽象类,接口,单例这些基本知识要掌握好。单例可以先不掌握,主要是源码中经常会出现单例模式,学习了单例可以方便以后进阶。
- 看一下扔物线关于compose的学习经验【扔物线】关于学习 Compose,我的经验总结和建议
第二阶段:学习compose常用布局和kotlin语法,入门compose
- (强烈推荐)学习扔物线的kotlin视频课,因为该系列视频课程讲得生动形象,而且也很有深度,不是仅仅粗浅的将一下kotlin的基础知识,而是系统深入地讲解了实际开发中用到的kotlin高级语法。
- 跟着jetpack compose博物馆看一看compose的原理的基本布局组件,了解功能即可,在实战中用到哪个组件我们再跟着学哪个
第三阶段:实战
- 选择一个实战项目,在实战中应用上面所学,并且在实战中学习compose开发的常用组件,这里也推荐扔物线在bilibili上的一门实战课【元旦特惠】扔物线Jetpack Compose只用看前三节免费课学习如何构建仿微信的界面就够了,后面想进阶的话可以考虑购买剩下部分,讲得确实非常好,等以后深入学习安卓我打算购买的。
入门难点:详解
lamda表达式
lambda表达式介绍
- lamda表达式是一种匿名函数,也就是没有定义名字的,往往是嵌套在其他代码块内的函数,可以用来将函数作为参数传递或者嵌套逻辑。
- lambda表达式的目的是为了简化表达,提高代码清晰度
lambda表达式的定义
1.(常用)直接定义 Lambda 表达式
优点:
- 用起来简洁
- 参数类型:在 Lambda 内部定义(
x: Int, y: Int
)。 - 返回值类型:由 Lambda 内最后一行代码推导(这里是
Int
)。1
2
3
4
5
6# 用法
{ 参数列表 -> 函数体 }
# 例如
val add = { a: Int, b: Int -> a + b }
println(add(2, 3)) // 输出 5
2.显式声明 Lambda 的类型
- 优点:
- 代码更清晰:适合复杂 Lambda,或者需要在接口中统一类型的场景
1
2
3
4
5# 用法
val 函数名:(变量类型)->返回值 = {函数体}
# 例如
val subtract: (Int, Int) -> Int = { x, y -> x - y }
println(subtract(7, 4)) // 输出 3
- 使用场景:
- Lambda 较复杂,需要明确参数和返回值类型。
- 需要在多个地方复用相同类型的 Lambda。
1 |
|
两种方式的对比
特性 | 直接定义 Lambda | 显式声明 Lambda 类型 |
---|---|---|
简洁性 | 更简洁,适合上下文明确的场景 | 更详细,适合复杂场景 |
类型定义 | 在 Lambda 内定义 | 在外部显式声明 |
适用场景 | 简单逻辑、上下文能推导类型的场景 | 需要明确类型或复杂逻辑时 |
代码可读性 | 对于熟悉的上下文,代码非常直观 | 适合陌生场景或团队协作 |
lambda表达式的使用之一:作为函数参数
使用方法
简化写法
- Lambda 是函数的最后一个参数,可以移到括号外
假设我们有一个函数 doOperation
,接受两个整数和一个 Lambda 表达式作为参数:
1 |
|
如果调用它时,Lambda 是最后一个参数,可以将 Lambda 从括号中移出去:
普通写法(Lambda 在括号内):
1 |
|
移到括号外的写法:
1 |
|
好处是更简洁,也符合 Kotlin 的习惯用法。
未完待续
由于接下来一段时间打算准备学习之后工作用的知识了,这段学习就告一段落啦(先挖个坑),之后用到jetpack compose时继续填坑~
下次更新的内容有:
- 状态提升
Jetpack compose入门
http://lightandsqlt.site/2024/12/31/学习/jetpack compose学习/