JetPack Compose开发应用指南

一、初识JetPack

  • JetPack是什么
    Jetpack 是一套库、工具和指南,可帮助开发者更轻松地编写优质应用。这些组件可帮助你遵循最佳做法、让你摆脱编写样板代码的工作并简化复杂任务,以便你将精力集中放在所需的代码上。
    JetPack分类有四种,分别是Architecture、Foundationy、Behavior、UI。

  • JetPack和AndroidX
    Jetpack 是各种组件库的统称,AndroidX 是这些组件的统一包名。

  • AndroidX的迁移
    第一步: 升级版本
    第二步:开启Jetifier
    第三步:更新依赖
    第四步:使用Android Studio进行迁移

二、Compose的设计原理和基本概念

  • JetPack Compose 环境搭建
    建议升级到北极狐版本(2020.3.1)。

  • JetPack Compose 新特性和组件依赖
    Compose的优势:

    1. 紧密结合Kotlin,可以利用现代化编程语言的魅力(高阶函数、各种函数新特性)
    2. 提高声明式UI开发效率
    3. 结合最新的IDE可以进行实时预览、动画执行等功能
    4. Jetpack Compose 为我们提供了很多开箱即用的Material 组件
    5. 还有很多等你体验
  • JetPack Compose 编程思想总结

    1. 声明性编程范式
    2. 可组合函数 ( @Composable函数)
    3. 声明性范式转变 (在 Compose 的声明性方法中,微件相对无状态,并且不提供
      setter 或 getter 函数。)

三、Compose入门

  • JetPack Compose 入门的基础案例

  • JetPack Compose 基础实战

四、Compose布局

  • Compose State
    Jetpack Compose 像React或者Flutter一样,需要通过state变更驱动UI刷新。但是
    Compose没有React的ClassComponent或者Flutter的StatefulWidget,那Compose
    是如何更新并监视state呢?
    一种方式是使用state{...}方法声明初始状态,并监听状态变化。当状态变化时,会触发
    recomposition执行从而刷新UI。
    另外一种方式就是通过@model注解来完成Compose State的管理。使用@modle添加的
    Class,其所有的的属性的变成了可观察的状态。

  • Compose 样式(Theme)
    Compose提供了系统化的方法来帮助我们自定义主题,这让我们在实现暗黑主题以及其他颜色主题的时候非常非常的方便。这一小节我们先通过一个小的案例来了解Compose的样式是什么?又该如何的设置?

  • Compose布局核心控件
    Jetpack Compose 提供了 Material Design 的实现,后者是一个用于创建数字化界面的综
    合设计系统。Material 组件(按钮、卡片、开关等)和布局(如 Scaffold)可作为可组合
    函数提供。

  • 自定义布局
    在 Compose 中,界面元素由可组合函数表面,此类函数在被调用后会发出一部分界面,这
    部分界面随后会被添加到呈现在屏幕上的界面树中。每个界面元素都有一个父元素,还可能
    有多个子元素。此外,每个元素在其父元素中都有一个位置,指定为 (x, y) 位置;也都有一
    个尺存,指定为 width 和 height。

  • Compose中的ConstraintLayout
    是否将 ConstraintLayout 用于 Compose 中的特定界⾯取决于开发者的偏好。在Android View 系统中,使用 ConstraintLayout 作为构建更高性能布局的一种方法,但这在 Compose 中并不是问题。在需要进行选择时,请考虑 ConstraintLayout 是否有助于提高可组合项的可读性和可维护性。

五、Compose动画

  • Compose SideEffect
    简单的可组合函数,使用 Compose,可以通过定义一组接受数据而发出界面元素的可组合
    函数来构建界面。

  • Compose 动画概述
    几个核心重点函数:

    1. AnimatedVisibility
    2. animateContentSize
    3. animate*AsState
    4. Animatable
  • Compose Crossfade
    Crossfade可以通过监听状态值的变化,使用淡入淡出的动画在两个布局之间添加动画效
    果,函数自身就是一个Composable。

  • Compose animateContentSize
    可以为布局大小动画设置动画速度和监听值。由函数的定义可以看出这个函数本质上就Modefier的一个扩展函数。可以通过变量size监听状态变化实现布局大小的动画效果。

  • Animatable
    Animatable 是一个值容器,它可以在通过 animateTo 更改值时为值添加动画效果。该API 支持animate*AsState 的实现。它可确保一致的连续性和互斥性,这意味着值变化始终是连续的,并且会取消任何正在播放的动画。

  • Compose自定义动画
    AnimationSpec 可以自定义动画的行为,效果类似于原生动画中的估值器。

六、Compose图形

  • Compose Canvas
    自定义图形的核心可组合项是 Canvas。在布局中放置 Canvas 的方式与放置其他 Compose界面元素相同。在 Canvas 中,开发人员可以通过精确控制元素的样式和位置来绘制元素。

  • Compose 绘制API的分析
    Canvas Composable 是官方提供的一个专门用来自定义绘制的独立组件,这个组件不包含任何子元素,类似于传统View系统中的一个独立View(不是ViewGroup,不包含子View)。Canvas参数有两个参数, 类型分别是 Modifier 与 DrawScope.() -> Unit。
    Modifier 作为该组件的修饰符不难理解, DrawScope.() -> Unit 是一个 reciever 为
    DrawScope 类型的 lambda。那么我们就可以在 lambda 中任意使⽤用DrawScope 为我们所
    提供的 API 了。

  • Compose自定义绘制
    对于自定义绘制,官方为我们提供了三个Modifier API,分别是drawWithContent、drawBehind 、drawWithCache。

七、Compose核心控件总结

  • Scaffold
    在Compose中提供了一种脚手架Scaffold的控件帮助开发者快速开发。在Scaffold中提供了很多配件,比如顶部菜单栏、侧滑菜单、底部菜单栏等。并且除了默认的Scaffold外,还有一些类似的控件,比如BackdropScaffold、BottomSheetScaffold等等。
  • LazyColumn
#Android##学习路径#
全部评论
感谢大佬分享!!!!
点赞 回复 分享
发布于 2022-01-13 15:52

相关推荐

会飞的猿:我看你想进大厂,我给你总结一下学习路线吧,java语言方面常规八股要熟,那些java的集合,重点背hashmap八股吧,jvm类加载机制,运行时分区,垃圾回收算法,垃圾回收器CMS、G1这些,各种乐观锁悲观锁,线程安全,threadlocal这些。在进阶一些的比如jvm参数,内存溢出泄漏排查,jvm调优。我这里说的只是冰山一角,详细八股可以去网上找,这不用去买,都免费资源。mysql、redis可以去看小林coding,我看你简历上写了,你一定要熟,什么底层b+树、索引结构、innodb、mvcc、undo log、redo log、行级锁表级锁,这些东西高频出现,如果面试官问我这些我都能笑出来。消息队列rabbitmq也好kafka也好,学一种就行,什么分区啊副本啊确认机制啊怎么保证不重复消费、怎么保证消息不丢失这些基本的一定要会,进阶一点的比如LEO、高水位线、kafka和rocketmq底层零拷贝的区别等等。计算机网络和操作系统既然你是科班应该理解起来问题不大,去看小林coding这两块吧,深度够了。spring boot的八股好好看看吧,一般字节腾讯不这么问,其他的java大厂挺爱问的,什么循环依赖啥的去网上看看。数据结构的话科班应该问题不大,多去力扣集中突击刷题吧。项目的话其实说白了还是结合八股来,想一想你写的这些技术会给你挖什么坑。除此之外,还有场景题、rpc、设计模式、linux命令、ddd等。不会的就别往简历上写了,虽然技术栈很多的话好看些,但背起来确实累。总结一下,多去实习吧,多跳槽,直到跳到一个不错的中厂做跳板,这是一条可行的进大厂的路线。另外,只想找个小厂的工作的话,没必要全都照这些准备,太累了,重点放在框架的使用和一些基础八股吧。大致路线就这样,没啥太多难度,就是量大,你能达到什么高度取决于你对自己多狠,祝好。
点赞 评论 收藏
分享
评论
1
2
分享

创作者周榜

更多
牛客网
牛客企业服务