Mosaic 0.15.0发布:动画支持与布局增强
Mosaic是一个基于Kotlin的终端UI框架,它借鉴了Jetpack Compose的声明式UI编程模型,使开发者能够使用类似的API在终端中构建丰富的用户界面。与传统的终端UI开发方式相比,Mosaic提供了更现代化、更声明式的开发体验。
全新动画支持库
本次0.15.0版本最引人注目的新特性是新增了mosaic-animation库,它为Mosaic应用提供了丰富的动画功能。这个库的设计灵感来源于Android的androidx.compose.animation-core,为终端UI带来了流畅的动画体验。
mosaic-animation库包含以下核心功能:
- 基础动画支持:包括补间动画、弹簧动画等
- 状态驱动的动画:当UI状态变化时自动触发动画
- 动画曲线控制:支持自定义缓动函数
- 组合动画:多个动画可以组合在一起同步或顺序执行
开发者现在可以轻松实现终端应用中元素的平滑过渡效果,比如列表项的展开/折叠、进度条的动态变化等,大大提升了终端应用的用户体验。
布局系统增强
0.15.0版本对Mosaic的布局系统进行了重要增强,新增了IntrinsicSize及相关修饰符:
Modifier.width/height:设置组件的宽度或高度Modifier.requiredWidth/requiredHeight:强制设置组件的宽度或高度IntrinsicSize:允许组件根据其内容计算固有尺寸
这些新特性使得布局系统更加灵活,开发者可以更精确地控制UI元素的尺寸,特别是在需要根据内容动态调整大小的场景下。
测试支持与布局标识
新版本引入了mosaic-testing库,专门用于测试Mosaic组件。这个库提供了以下能力:
- 确定性渲染:确保测试环境下UI渲染结果一致
- 组件状态验证:可以断言组件的各种状态
- 交互测试:模拟用户输入并验证UI响应
此外,新增的Mosaic.layoutId功能允许开发者为布局元素分配唯一标识符,这在复杂布局中特别有用,可以方便地在父组件中识别和操作特定的子组件。
自定义修饰符支持
Modifier.composed的引入是一个重要的API增强,它允许开发者创建自定义的可重用修饰符,并在其中访问Compose功能。这意味着:
- 可以封装复杂的修饰逻辑为可重用组件
- 可以在修饰符中访问状态和其他Compose特性
- 提高了代码的模块化和可维护性
性能优化与问题修复
在性能方面,0.15.0版本移除了20FPS的渲染帧率限制,现在渲染会尽可能快地进行(但仍只在必要时渲染)。这一变化减少了事件处理时的视觉延迟,使UI响应更加即时。
修复了自定义Modifier在多父类型(如同时继承LayoutModifier、DrawModifier等)情况下的处理问题,提高了框架的稳定性和可靠性。
总结
Mosaic 0.15.0版本通过引入动画支持、增强布局系统、改进测试能力和提供更灵活的API,显著提升了终端UI开发的体验和能力。这些改进使得开发者能够构建更加动态、响应迅速且易于维护的终端应用程序,进一步巩固了Mosaic作为现代化终端UI框架的地位。
atomcodeClaude Code 的开源替代方案。连接任意大模型,编辑代码,运行命令,自动验证 — 全自动执行。用 Rust 构建,极致性能。 | An open-source alternative to Claude Code. Connect any LLM, edit code, run commands, and verify changes — autonomously. Built in Rust for speed. Get StartedRust0214
cann-learning-hubCANN 学习中心仓,支持在线互动运行、边学边练,提供教程、示例与优化方案,一站式助力昇腾开发者快速上手。Jupyter Notebook0138
uni-appA cross-platform framework using Vue.jsJavaScript08
GLM-5.2智谱开源 GLM-5.2,这是针对长文本任务的最新旗舰模型。相较于前代产品 GLM-5.1,它在长文本任务处理能力上实现了显著飞跃,并且首次在稳定的 100 万 token 上下文中提供这一能力。Jinja00
SwanLab⚡️SwanLab - an open-source, modern-design AI training tracking and visualization tool. Supports Cloud / Self-hosted use. Integrated with PyTorch / Transformers / LLaMA Factory / veRL/ Swift / Ultralytics / MMEngine / Keras etc.Python00
tiny-universe《大模型白盒子构建指南》:一个全手搓的Tiny-UniverseJupyter Notebook03