首页   注册   登录
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
宝塔
V2EX  ›  Android

[自荐项目] Android X2J - write XML, run Java

  •  2
     
  •   7hens · 39 天前 via Android · 1682 次点击
    这是一个创建于 39 天前的主题,其中的信息可能已经有所发展或是发生改变。
    Android X2J 是一个 Gradle 插件,它可以 自动 将你的 XML 布局翻译成 Java 代码,并 自动 注入到 Activity 和自定义布局中。项目地址 https://github.com/7hens/android-x2j
    第 1 条附言  ·  38 天前
    额,感觉好多人这个库有误解。

    X2J 不是一个 MVVM 库,也不是用 Java 代码来写布局。

    X2J 只是一个 Gradle 插件,它并没有改变我们的传统开发体验,也是使用 XML 来写布局,并且也是通过 setContentView(layoutId) 来生成 View。

    唯一的不同是,传统的布局加载方案都是在运行时解析 XML (通过 LayoutInflater ),而 Android X2J 则可以将 XML 的解析提前到编译时,从而可以让布局加载速度提升 200%。
    13 回复  |  直到 2019-10-15 11:20:23 +08:00
        1
    winterbells   39 天前 via Android
    hmmm,
    我记得 anko 有类似的。不过是转换成 Java 后继续编辑的
    最后是不是像 flutter 那样了
        2
    bccoder   39 天前 via Android
    大佬请喝茶
        3
    ittianyu   39 天前
    费这么大劲,不如直接 java 写 UI。
    推荐一下我的 UI 框架。

    单 Activity 应用也很容易实现。还可以做到动态 jar 包动态 UI。
    https://github.com/ittianyu/relight
        4
    7hens   39 天前 via Android
    @winterbells 额,这个和 anko 不一样。anko 使用 kotlin 来写代码,导致它的布局预览需要使用额外的插件,并且每次修改完都需要重新 build。

    而 X2J 和普通的开发体验一模一样,也是使用 Xml,所以能直接预览。唯一的不同是它将 XML 的解析时机提前到了编译时。所以 X2J 能将布局的加载速度提升 200%.

    而且 X2J 可以直接添加到已有的项目中,你不需要修改任何代码就能使用它。
        5
    7hens   39 天前 via Android
    @ittianyu

    relight 是模仿的 flutter 吧。这个和 X2J 不一样哦。

    X2J 还是使用普通的 XML 来写布局,和普通的开发体验没有什么区别,唯一不同是,它将 XML 的解析工作放在了编译的期间来做。
        6
    KunMinX   39 天前
    终于等到你
        7
    cjh1095358798   38 天前 via Android
    @ittianyu 大佬厉害啊
        8
    7hens   38 天前 via Android
    @ittianyu 我记得谷歌官方有个和 relight 类似的库 jetpack compose。类似的还有 java 版的 anvil。不过它们都没法实时预览,relight 应该也是。但 X2J 可以做到实时预览,因为它使用的还是传统的 XML。

    不过 X2J 是不能和这些响应式编程方案相提并论的,它们压根不是同一种类型的库。
        9
    7hens   38 天前 via Android
    @KunMinX 等我干嘛? →_→
        10
    wanglufei   38 天前 via Android
    x2c 项目本身就一堆坑,复杂点的布局和场景就支持不了
        11
    7hens   37 天前 via Android
    @wanglufei
    X2C 确实是一堆坑,但是可以改进的嘛 😂
        12
    janus77   36 天前
    这个和 X2C 有啥区别的
        13
    7hens   36 天前
    @janus77

    X2J 是一个基于 X2C 的 Gradle 插件。

    首先,X2J 会把 X2C 添加到 app 的 dependencies 里面,然后会生成 X2C 需要的 @Xml 注解。

    然后,在 apk 编译过程中,X2C 会根据上面生成的 @Xml 注解将相关 XML 布局翻译成 Java 代码。

    最后,X2J 会使用字节码编辑技术将生成的 Java 代码自动注入到 Activity 和自定义布局中。

    整个 XML 解析过程都是在编译期间完成的,所以会提升 XML 布局的加载速度。
    关于   ·   FAQ   ·   API   ·   我们的愿景   ·   广告投放   ·   感谢   ·   实用小工具   ·   983 人在线   最高记录 5043   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.3 · 34ms · UTC 20:04 · PVG 04:04 · LAX 12:04 · JFK 15:04
    ♥ Do have faith in what you're doing.