拜访【WRITE-BUG 数字空间】_[内附残缺源码和文档]
就我本人的体验来说,应用 Compose 开发的利用我感触不到和 Android 原生开发之间有什么性能差别,但 Compose 在开发难度上会低很多
Google 官网上是这么介绍 Compose 的:Jetpack Compose 是用于构建原生界面的新款 Android 工具包,它可简化并放慢 Android 上的界面开发,应用更少的代码、弱小的工具和直观的 Kotlin API,疾速让利用活泼而精彩
长期以来,Android 的视图层次结构能够示意为一个视图树,视图树中蕴含着若干个 View 和 ViewGroup。当利用的数据因为用户交互等起因而发生变化时,界面的层次结构就须要进行更新以显示最新数据。最常见的界面更新形式就是应用 findViewById()等函数遍历视图树,并通过调用 button.setText(String)、container.addChild(View) 或 img.setImageBitmap(Bitmap) 等办法来扭转特定节点,而这些办法就会扭转 View 的外部状态。但这种手动操纵视图的形式进步了出错的可能性。如果一条数据须要在多个地位出现,开发者可能一不小心就会遗记更新某个显示它的视图。此外,当两项更新以意外的形式发生冲突时,也很容易造成异样状态。例如,某项更新可能会尝试批改刚刚从界面中移除的节点。一般来说,软件维护复杂性会随着须要更新的视图数量增多而增长
在过来的几年中,整个行业已开始转向申明性界面模型,该模型大大简化了与构建和更新界面关联的工程设计。该技术的工作原理是在概念上从头开始从新生成整个屏幕,而后仅执行必要的更改。此办法可防止手动更新有状态视图层次结构的复杂性。Compose 就是一个实用于 Android 的旧式申明性界面工具包,提供了申明性 API,让开发者可在不以命令形式扭转前端视图的状况下出现利用界面,从而使编写和保护利用界面变得更加容易
可组合函数
Compose 的重点就在于 @Composable 函数,即可组合函数,每个可组合函数能够接管若干入参参数用于参加视图构造的绘制阐明,但函数不返回任何值。可组合函数只用于形容视图构造如何绘制以及如何与用户进行交互,但不须要返回视图对象,而是由 Compose 依据开发者的形容来生成具体的视图对象
本游戏的 icon 就是通过这种形式来生成的。能够看到 PreviewTetrisIcon() 函数并不蕴含返回值,当然这种状况下也不须要入参参数。此外,Compose 的一个长处就是所见即所得,通过增加 @Preview 注解就能够预览实现成果,每次批改过后无需编译,只有刷新一下就能够看到批改后果