Android JetPack Compose详解 Compose的设计原理和概念(从入门到入土)

13 篇文章 0 订阅
4 篇文章 0 订阅

前言:

继上一章初识Jetpack之后,我们继续来讲Compose的设计原理和基本概念

第⼆章 Compose的设计原理和基本概念
2.1 JetPack Compose 环境搭建
可以看到IDE已经帮我们构建了⽣成Compose的选项。
gradle 配置
1)在app⽬录下的build.gradle 中将app⽀持的最低API 版本设置为21或更⾼,同时开启Jetpack Compose enable开关,代码如下:
在这里插入图片描述

  1. 添加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) }))

总结

其实要轻松掌握很简单,要点就两个:

  1. 找到一套好的视频资料,紧跟大牛梳理好的知识框架进行学习。
  2. 多练。 (视频优势是互动感强,容易集中注意力)

你不需要是天才,也不需要具备强悍的天赋,只要做到这两点,短期内成功的概率是非常高的。

对于很多初中级Android工程师而言,想要提升技能,往往是自己摸索成长,不成体系的学习效果低效漫长且无助。下面资料部分截图是我花费几个月时间整理的,诚意满满:特别适合有3-5年开发经验的Android程序员们学习。扫描下方二维码即可获取全部资料

请添加图片描述
请添加图片描述

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值