Booster 布局转译器

1 · Johnson Lee · Oct. 30, 2019, midnight
在上一篇文章中已经介绍过 booster 正在做的 Layout Transpiler —— 将 XML 布局文件翻译成 class 的转译器,在实现的过程中发现了 Android 系统在设计上的各种坑,而且是天坑,几乎是绕不过去了,最近 Android 官方发布了 JetPack Compose 让我眼前一亮,这不就是我想要达到的效果么,只不过是换了一种形式罢了。 布局转译器 在前面的文章中只是大致提了一下实现 XML 转 class 的思路,很多人看了文章之后反馈说没看懂,所以在这里深入介绍一下实现的细节。 § Booster 的方案最最核心的部分是构建 AttributeSet,为什么呢? 因为 View 的构造方法需要它 § Android 系统是如何构建 AttributeSet 的呢? Android 在运行时调用 View 的构造方法时,传递的 AttributeSet 其实是 XmlPullParser 的子类,如: XmlBlock.Parser,所以,Android 在运行时是边解析 XML 边实例化 View 。 § Booster 是如何构建 At...