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

Jetpack Compose 1.0 发布了,移动端与桌面端分别体验如何?

  •  
  •   Veneris · 2021-07-29 16:11:38 +08:00 · 11712 次点击
    这是一个创建于 1208 天前的主题,其中的信息可能已经有所发展或是发生改变。
    29 条回复    2021-08-02 15:04:12 +08:00
    3dwelcome
        1
    3dwelcome  
       2021-07-29 16:53:52 +08:00
    教育机构狂喜,新技术代表新的培训项目,又能收割一批新的小白学员了。

    开发者嘛,管你性能好不好,现在要开发都用三端统一的 UI 解决方案( web,android,ios),单独为安卓开发,又费钱又浪费时间,过了几年,发现自己是用爱给 Google 团队发电。

    以前 XML 还能丢给美术,设计一下 UI 界面美感。现在 Compose 这种纯代码声明 UI,找哪个设计师帮你写设计代码?又不是人人都是技术美术,普通理科码农手写 UI 代码,巨丑。
    nicocho
        2
    nicocho  
       2021-07-29 17:55:30 +08:00
    上午刚准备了解下 jetpack , 一篇文章给出的数据如下


    构建时间能够 减少 29%
    XML 行数大幅减少了 76%
    APK 大小缩减了 41%
    方法数减少了 17%
    Cloud9527
        3
    Cloud9527  
       2021-07-29 18:10:32 +08:00
    @3dwelcome 基本没有培训 Android 的了。。。我认识一些开发还没用这个
    meteor957
        4
    meteor957  
       2021-07-29 18:54:48 +08:00
    早几年估计是个大新闻,现在 Android 开发快要灭绝的情况下,除了卖课的感觉都没啥人关注
    pocarisweat
        5
    pocarisweat  
       2021-07-29 19:20:57 +08:00
    就算是 Java 也比 Electron 看着顺眼啊,哎
    fescover
        6
    fescover  
       2021-07-29 19:35:57 +08:00
    哪天支持 ios 就学
    tanranran
        7
    tanranran  
       2021-07-29 22:01:46 +08:00
    基于 canvas 的,性能上会比 xml 好一些,个人猜测,后期会和 flutter 大融合?
    aabbcc112233
        8
    aabbcc112233  
       2021-07-29 22:06:01 +08:00 via Android   ❤️ 2
    @3dwelcome 请问哪个公司 xml 给 UI 来写????
    Michelangelono
        9
    Michelangelono  
       2021-07-29 22:10:19 +08:00
    @nicocho apk 体积如何做到的减少?毕竟 jetpack 实际是增加了很多依赖。
    coolmint
        10
    coolmint  
       2021-07-29 22:20:51 +08:00 via iPhone
    我在 rc1 的时候把 compose 引入到项目中来,简单重写了一个界面,感觉还是不错的,当然和纯用 compose 构建的项目还是区别比较大的,以后准备用 compose 做更多的页面进一步深度体验
    3dwelcome
        11
    3dwelcome  
       2021-07-29 22:27:55 +08:00 via Android
    @aabbcc112233 xml 有可视化编辑器,UI 设计师来改个颜色,弄个字体大小和样式总没问题吧。
    compose 可就全部都是代码了。
    aabbcc112233
        12
    aabbcc112233  
       2021-07-29 22:37:32 +08:00   ❤️ 4
    @3dwelcome 没听说过 UI 有这个能力,也没听说过哪个公司让 UI 参与 xml 布局
    Yadomin
        13
    Yadomin  
       2021-07-29 22:41:09 +08:00
    别的不说,用 Jetpack Compose 重写的 Idea Toolbox 已经烂了
    Yadomin
        14
    Yadomin  
       2021-07-29 22:41:34 +08:00
    内存占用比肩 Electron
    maninfog
        15
    maninfog  
       2021-07-29 22:45:01 +08:00 via iPhone
    体验还是不错的,将数据驱动 UI 的思想贯彻到了极致,声明式 UI 有一种用了回不去的感觉。

    首先底层还是基于 Skia,还是 canvas 那一套,所以和 view 的互操作性很高,可以渐近的接入。Dialog 看了下底层还是原生的包了下。

    最开始担心没有实时 preview 写起来不习惯,后面发现渐渐习惯了也还好,也会尝试着写完一个页面再调试,不再依赖预览。

    如果你的设计是 MD,用 Compose 会很舒服,内置丰富的 MD 控件; Compose 处理换肤也是轻而易举,想想使用 view 时,一些换肤框架还要去 hook LayoutInflater 有点头皮发麻…

    至于坑的话,个人觉得就是刚出来,还没有状态管理的最佳实践,另外就是页面组织不好的话阅读起来有点困难。
    3dwelcome
        16
    3dwelcome  
       2021-07-29 23:22:14 +08:00
    @aabbcc112233 XML 是数据描述,是可以和内部工作流一些可视化工具桥接的。最终给 UI 展示的,就是普通 low code 设计软件操作界面。

    但是 Compose 的组件都是偏手写代码,很难和工具整合。界面也代码和逻辑都混在一起,不好分离。对 UI 来说,改一点点,都异常困难。

    国内的需求本来就是改的多,只有很少团队是完全按照设计稿一次成型的。
    MakHoCheung
        17
    MakHoCheung  
       2021-07-29 23:26:17 +08:00
    @Yadomin 这个不同,compose for desktop 底层还是 基于 Swing,而且还是 alpha 阶段,不急
    0bit
        18
    0bit  
       2021-07-29 23:28:41 +08:00
    按照折腾 SwiftUI 的教训,尽量还是多等等吧
    3dwelcome
        19
    3dwelcome  
       2021-07-29 23:57:18 +08:00
    @maninfog "想想使用 view 时,一些换肤框架还要去 hook LayoutInflater 有点头皮发麻"

    google 用 xml 的初衷应该是为了界面灵活多变,然而为了性能,最后弄了个谁都看不懂的二进制 XML 格式,还和资源强关联,想改都改不了。活生生把开发者的一些道路给堵死。

    如果 LayoutInflater 用的全部都是明文 XML,也不至于沦落到今天这个尴尬的下场。
    sunbreak
        20
    sunbreak  
       2021-07-30 07:37:37 +08:00
    @MakHoCheung 不是基于 Swing,是基于 https://github.com/JetBrains/skija/

    但确实保持了和 Swing 、JavaFx 框架的互操作性: https://blog.jetbrains.com/cross-post/jetpack-compose-for-desktop-milestone-2-released/
    MakHoCheung
        21
    MakHoCheung  
       2021-07-30 09:09:23 +08:00
    @sunbreak 我知道它是用 skija 渲染,但是你点进去看 window,还是 swing 的 window 。
    ingramyang
        22
    ingramyang  
       2021-07-30 09:19:57 +08:00 via Android
    没有用,就是 flutter 的复制品。但是 flutter 可以做到一套 UI 代码多平台运行,可 compose 的桌面和移动端 UI 接口都不一样,所以没啥用这东西。
    wobuhuicode
        23
    wobuhuicode  
       2021-07-30 09:47:12 +08:00
    用了 5 年 react-native 都没有一个正式版……
    james2013
        24
    james2013  
       2021-07-30 15:16:10 +08:00
    个人觉得这个功能很垃圾,xml 能够很好的分离逻辑和界面,这个功能又把界面和逻辑搞在 java 里,复制的界面 xml 布局几百行,甚至要分几个 xml 导入,方便管理
    fromzero
        25
    fromzero  
       2021-07-30 23:12:37 +08:00
    @3dwelcome ui 界面和逻辑是否混在一起 取决于你怎么写。 完全可以每个组件完全隔离,传入相应的 逻辑 block 函数。充分组合复用每个小 UI 组件。
    fromzero
        26
    fromzero  
       2021-07-30 23:14:45 +08:00
    @3dwelcome compose 也有 preview 啊
    honjow
        27
    honjow  
       2021-07-31 17:43:40 +08:00 via iPhone
    @james2013 声明式 ui 框架全是代码里写布局,还有代码里写布局不代表 ui 和逻辑不能分离
    sahooz
        28
    sahooz  
       2021-08-01 00:47:00 +08:00 via Android
    如果早出几年并且支持跨平台(至少支持 Android 和 iOS),我会毫不犹豫选它,现在我有 Flutter,没太大动力去搞它了感觉……
    pipilu
        29
    pipilu  
       2021-08-02 15:04:12 +08:00
    声明式 UI,不香吗
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   5543 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 24ms · UTC 06:39 · PVG 14:39 · LAX 22:39 · JFK 01:39
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.