Contour——Kotlin构建Android UI的新方式(已废弃)

Contour——Kotlin构建Android UI的新方式(已废弃)

请注意:Contour项目已被废弃,我们建议开发者转向使用Jetpack Compose UI

Contour曾是一个革命性的UI库,提供了一种类型安全的、以Kotlin为中心的API,旨在作为Android布局API最薄的包装层。它允许您在纯Kotlin中构建复合视图,而无需使用不透明的布局规则,而是通过直接参与布局阶段来实现。Contour与ConstraintLayout类似,但不同之处在于,您不是在XML中定义约束,而是使用可执行的lambda表达式。

抛弃XML,拥抱Kotlin

XML曾经是静态内容的良好载体,但在现代动态UI的时代,它的地位已经动摇。我们的UI越来越多地需要动态行为,如:

  • 根据屏幕大小更改配置
  • 延迟加载UI元素
  • 运行时A/B测试组件
  • 动态主题应用
  • 根据应用状态添加和删除组件

然而,XML是一个静态标记语言,我们却试图让它成为编程语言。替代方案是什么?一个完整的编程语言——Kotlin!转向Kotlin,我们可以获得哪些好处?

  • 没有findViewById,视图声明存在于作用域内。
  • 消除R.id.my_view的模糊性,Kotlin拥有命名空间和封装!
  • 静态类型!
  • 强大的IDE支持(告别卡顿的XML编辑器)
  • 不再需要ViewHolder
  • 更容易的依赖注入

使用方法

Contour通过创建视图位置和尺寸的关系来工作,类似于ConstraintLayout。但是,你不再提供XML属性,而是提供在布局阶段直接调用的“轴解算器”(axis solver),这些解算器通过layoutBy()提供。下面是一个例子:

class BioView(context: Context) : ContourLayout(context) {
  // 省略代码...
}
运行时布局逻辑

由于你在编写普通的Kotlin代码,所以可以引用其他视图并使用数学运算符描述你的布局。这些lambda函数也可以用于运行时决策,这些决策将在每次布局传递时进行评估。

上下文感知API

Contour努力使开发人员更容易做到正确的事情。为此,所有布局函数返回的都是正确的可用操作接口。

轴向类型安全性

Contour大量使用内联类以提供布局中的轴向类型安全性。

循环引用调试

当出现循环引用时,Contour会快速并大声地报告错误,并尽可能提供上下文信息。

与Compose的比较

Contour与Jetpack Compose的主要区别在于,Compose是一种使用反应式编程驱动视图的程序化UI工具包,而Contour只关心视图布局的基础部分——使其尽可能灵活且易于使用。

版本发布与许可

Contour的最新稳定版本为1.1.0,可通过Gradle引入。此外,开发版本的快照也可在Sonatype的snapshots仓库获取。

许可证

Contour遵循Apache License 2.0协议。


尽管Contour项目已不再活跃,但它展示了一种构建Android界面的创新方式。如果你正在寻找一种更加类型安全、更接近于代码的布局解决方案,那么Contour的历史记录和技术思路仍然值得学习和借鉴。

  • 7
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

宋韵庚

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值