Jetpack Compose 1.0 发布了,移动端与桌面端分别体验如何? - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
Veneris
V2EX    Android

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

  •  
  •   Veneris 2021-07-29 16:11:38 +08:00 15308 次点击
    这是一个创建于 1592 天前的主题,其中的信息可能已经有所发展或是发生改变。
    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     Solana     1231 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 22ms UTC 17:00 PVG 01:00 LAX 09:00 JFK 12:00
    Do have faith in what you're doing.
    ubao msn snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86