Avalonia 11.2 正式发布:跨平台应用开发的飞跃

Avalonia 11.2 正式发布:跨平台应用开发的飞跃

编码文章call10242025-02-01 3:24:4713A+A-

Avalonia UI 今日正式发布 11.2.0 版本,为跨平台 UI 开发带来了丰富的更新和优化,新增了 28 个功能,21 项增强,76 个修复项,和 37 项其他改进,为开发者提供了更强大的工具和更流畅的体验。


铱泓科技的开源项目 Semi.Avalonia 和 大熊Ursa 对 Avalonia 11.2.0 的正式适配即将完成,尽情期待。


??增强跨平台支持??


WASM 多线程渲染与调度支持

此次更新为 WASM 引入了多线程渲染支持,优化了调度器,使 WebAssembly 应用的 UI 渲染更为流畅。在 .NET 9 的多线程模式下,画布可转移至 Web Worker 进行后台处理,大幅提升了响应速度。


macOS 原生嵌入支持

Avalonia 11.2.0 允许开发者将 Avalonia 嵌入至 macOS 原生应用中,仅需一个 NSView 实例即可实现嵌入,满足不同项目需求。文本输入法与弹出窗口的交互也得到优化,进一步提升了用户体验。


引入基于 GLib 的调度器

GLib-based dispatcher 的引入为基于 Avalonia 的应用提供了与其他 UI 框架(如 GTK)共存的可能。此实现允许 Avalonia 与其他依赖 GRunLoop 的工具(例如 GTK)在同一线程上运行,从而提升了跨平台的兼容性。


Metal 渲染默认启用

为提升图形性能,macOS 和 iOS 端默认启用 Metal 渲染。相比 OpenGL,Metal 能更高效地调用设备 GPU 资源,带来更流畅的 UI 渲染,尤其适用于图形密集型应用。


重构了 AvaloniaInputConnection

此重构使 Avalonia 更好地适配了多种 Android 输入法,不再局限于 GBoard,也对其他需要更高级别文本组合和预测的输入法有了更出色的支持。这对提升用户在 Android 平台上的输入体验起到了关键作用。


??性能优化??


提升 AvaloniaObject.GetValue 性能

针对 AvaloniaProperty.GetValue() 方法的性能进行了显著提升,这是每次访问 Avalonia 属性时都会调用的重要方法。


优化 X11 启动延迟

针对 X11 后端的启动延迟进行了显著优化。这一改进旨在提升应用程序的启动速度,让用户体验更加流畅。


使用 epoll 优化调度循环

增加了对 epoll 的支持,以优化调度循环的性能,尤其在低性能设备上表现更为明显。


??用户界面和用户体验改进??


ToolTip新特性

ToolTipOpening 和 ToolTipClosing 附加事件 以及 ToolTip.Opened 和 ToolTip.Closed,增强了 ToolTip 的功能,允许开发者更灵活地控制提示信息的显示与关闭。


自定义弹出窗口位置回调

为 Popup 及基于 Popup 的控件(如 Flyout、Tooltip 和 ContextMenu)引入了 Placement.Custom 选项,使开发者能够更灵活地控制弹出窗口的位置。


ToolTip 内部使用 Popup,并修复关闭目标时 Popup 不关闭的问题

通过将 ToolTip 的实现简化为基于 Popup,增强了代码的一致性和可维护性。


TreeViewItem更新

将 TreeViewItem 展开状态暴露为根节点事件 为 TreeView 添加了一个路由事件,以便开发者能够便捷地追踪 TreeViewItem 展开状态的变化。


改善 TextTrimming 自定义体验

通过将一些辅助函数的可见性从内部更改为公开,简化了自定义 TextTrimming 实现的过程。


??开发者生产力特性??


Screens API 重构

新版本对 Screens API 进行了全面重构,使多屏幕管理更加稳定。开发者不必再每次手动获取屏幕实例,窗口变动时屏幕实例会自动更新,还新增了 DisplayName 和 CurrentOrientation 等属性,使屏幕管理更加直观和高效。


x:Shared 支持

Avalonia 11.2.0 引入了与 WPF 类似的 x:Shared 支持,这一特性让资源共享更为便捷。开发者可以选择资源实例的共享方式,不仅简化了从 WPF 向 Avalonia 的迁移过程,还显著优化了内存使用和资源管理。


macOS 沙盒功能

引入的 macOS 沙盒功能,旨在使 macOS 应用程序能够与 App Store 沙盒环境兼容。开发者需要注意与文件系统的交互,每次操作都需在安全范围会话中进行。


每个 RoutedEvent 可用作附加事件

通过此次更新,所有的 RoutedEvent 都可以作为附加事件使用。如果事件名称以 Preview 为前缀,则处理程序将作为隧道事件注册。


Notification新API

为 INotificationManager 和
IManagedNotificationManager 添加 Close 和 ClearAll 方法 本次更新为通知管理器接口添加了 Close() 和 ClearAll() 方法,同时为 Show 方法引入了 CancellationToken 参数。


为 TimePicker 控件添加对秒的支持

本次更新为 TimePicker 控件新增了对秒的支持,添加了 UseSeconds 属性,默认为 false。这一更新增强了 TimePicker 控件的灵活性,使得开发者能够根据需求选择是否包含秒的设置。


为 DevTools 添加 HotKeys 页面

新增了一个 HotKey 页面,以便用户能更方便地发现 DevTools 的快捷键,免去查阅文档的麻烦。


改进 DevTools 的设置值预览功能

本次更新增强了 DevTools 的预览功能,以便在设置值时包括所有优先级的值,从而减少开发者的困惑。


实现了 IFormattable 接口

在 KeyGesture 上实现 IFormattable 本次更新实现了 IFormattable 接口,增强了 KeyGesture 的可读性,尤其在用户界面中使用时,例如菜单。此次更新旨在提升用户体验,确保不同平台上的 KeyGesture 显示一致且易于理解。


??图形和动画增强??


实现PolyBezierSegment

允许开发者使用任意数量的控制点绘制复杂的贝塞尔曲线,这为图形绘制提供了更大的灵活性,尤其在迁移 WPF 应用程序时,能够更轻松地实现复杂路径的效果。


引入的 VisualBrush 作为 OpacityMask 功能

解决了之前只能使用颜色画刷作为不透明度遮罩的问题。通过这一改进,开发者现在可以使用 VisualBrush 创建更复杂的视觉效果。


??构建和部署改进??


Avalonia 单项目支持

本次更新旨在简化创建 Windows、macOS、iOS 和 Android 平台的单项目过程,并允许使用 "net8.0-browser" 作为目标。


升级 DBus 栈

本次更新提升了对 DBus 的支持,现在采用“官方”的 Variant 系统,从而提升了兼容性和功能性。此更新有助于更好地支持 DBus 通信。


支持 DisableRuntimeMarshalling 并修复 macOS Metal AOT

本次更新为每个可修剪项目设置了 DisableRuntimeMarshalling,除非项目明确指定需要启用。


禁用 GetProcAddress 的运行时封送处理

调整了
GetProcAddressInitializationGenerator,使其不再依赖于运行时封送处理,同时为 OpenGL、Vulkan 和 Android 项目禁用了该特性。


总结


Avalonia 11.2.0 标志着框架在跨平台 UI 开发上的一次重要飞跃。此次更新涵盖了丰富的功能与改进,展示了团队对提升开发者体验和应用性能的持续承诺。从WASM多线程渲染支持的引入到优化的 macOS 嵌入体验,再到更灵活的开发工具,这些新特性为开发者提供了更强大的创造力。


我们鼓励所有 Avalonia 用户尽快升级,深入探索这些创新功能。您的反馈和参与将继续推动 Avalonia 的发展,因此请随时与社区分享您的想法与建议。


祝您在开发过程中一切顺利,我们期待看到您用 Avalonia 11.2.0 创造的精彩应用。铱泓科技的开源项目 Semi.Avalonia 和 大熊Ursa 对 Avalonia 11.2.0 的正式适配即将完成,尽情期待。


点击这里复制本文地址 以上内容由文彬编程网整理呈现,请务必在转载分享时注明本文地址!如对内容有疑问,请联系我们,谢谢!
qrcode

文彬编程网 © All Rights Reserved.  蜀ICP备2024111239号-4