首页
/ DivKit 31.5.0版本更新解析:移动端与Web端协同进化

DivKit 31.5.0版本更新解析:移动端与Web端协同进化

2025-06-20 07:22:38作者:何将鹤

DivKit作为一个跨平台的UI框架,通过声明式JSON描述界面布局与交互逻辑,实现了在Android、iOS和Web三大平台的高性能渲染。本次31.5.0版本的更新带来了多项功能增强与问题修复,体现了框架在动态UI构建、动画效果和跨平台一致性方面的持续优化。

Android客户端重大改进

预加载控制精细化 新引入的PreloadFilter接口为DivPreloader提供了更灵活的预加载策略。开发者现在可以通过实现该接口,完全自主决定哪些内容需要预加载,不再受限于元素本身的preloadRequired属性值。这种设计特别适合需要根据网络状况、设备性能或业务场景动态调整预加载策略的复杂应用。

视觉特效优化 Shine扩展现在支持在视图不可见时暂停动画效果,当视图重新可见时恢复动画。这种智能化的生命周期管理显著降低了不必要的资源消耗,对于包含大量动画元素的列表界面尤其重要。

表单交互增强 新增对submit动作的支持使得表单处理更加完整。结合现有的input组件,开发者现在可以构建完整的表单提交流程,包括数据收集、验证和提交动作的触发。

布局计算修复 本次更新重点修复了多个布局计算问题:

  • 修复了container组件在启用tighten_width时文本内容宽度计算不准确的问题
  • 修正了RTL(从右到左)布局下container内的内容对齐方式
  • 改进了线性渐变的大小计算逻辑,确保视觉效果与设计稿一致

性能优化 针对gallery组件的滑动体验进行了专项优化,现在快速滑动(fling手势)后的吸附定位更加流畅自然。同时修复了patch机制可能影响item_builder后续工作的问题,确保动态更新后的列表仍能正常构建新项目。

iOS客户端关键更新

布局计算逻辑统一 本次更新调整了带有weight属性的可调整大小元素的尺寸计算方式。现在元素的尺寸计算不再包含边距(margin),这意味着当多个具有相同weight值的元素放置在同一个容器中时,即使它们的边距设置不同,最终获得的尺寸也会保持一致。这种改变使布局行为更加符合开发者直觉,也与其他平台的实现保持了一致。

转场动画修复 修复了视图尺寸变化时的转场动画问题,现在尺寸变化过程中的动画过渡更加平滑自然。对于包含动态内容的卡片式界面,这种改进显著提升了用户体验。

无障碍访问优化 对div-tooltip组件的无障碍支持进行了更新,确保辅助技术能够正确识别和朗读提示内容,满足无障碍设计的要求。

Web客户端功能扩展

布局系统增强 Web端本次获得了多项布局能力升级:

  • pager组件新增wrap_content布局模式,使其能够根据内容自动调整尺寸
  • 新增cross_axis_alignment属性支持,可以精细控制pager中项目的交叉轴对齐方式
  • 新增pagerChildrenClipEnabled配置标志,特别适用于处理pager内包含阴影元素时的裁剪需求
  • 修正了grid组件column_count属性的默认值问题,现在明确要求必须指定该值

视觉样式丰富

  • 新增对线性渐变中color_map属性的支持,允许创建更复杂的渐变效果
  • 实现了dashed虚线描边样式,扩展了边框设计的可能性
  • 改进了menu_items的样式表现,确保视觉一致性

交互体验优化

  • 修复了tabs组件内可点击内容的交互问题
  • 改进了input组件在keyboard_type为number时的虚拟键盘行为
  • 新增对tooltip组件non_modal模式的支持,允许提示框出现时不阻断其他交互

状态管理警告 现在当使用transition_id、transition_out或transition_change属性但缺少必需的id属性时,系统会给出明确警告,帮助开发者及时发现并修复状态转换相关的问题。

补丁机制改进 修复了使用patch时可能导致相邻组件意外重建的问题,提高了动态更新界面的性能和稳定性。

跨平台协同设计思想

本次更新体现了DivKit团队在保持各平台特性的同时,努力实现核心功能与API的一致性。例如submit动作的支持、tooltip的无障碍改进等都同步出现在了多个平台。这种协同设计既降低了开发者的学习成本,又确保了最终用户体验的一致性。

特别值得注意的是布局计算逻辑的调整,如iOS端weight计算方式的改变,实际上是对各平台实现差异的消除,使开发者无论针对哪个平台,都能获得符合预期的布局结果。这种对细节的关注正是DivKit能够成为可靠跨平台解决方案的关键所在。

登录后查看全文
热门项目推荐

热门内容推荐

最新内容推荐

项目优选

收起
Cangjie-ExamplesCangjie-Examples
本仓将收集和展示高质量的仓颉示例代码,欢迎大家投稿,让全世界看到您的妙趣设计,也让更多人通过您的编码理解和喜爱仓颉语言。
Cangjie
340
1.2 K
ohos_react_nativeohos_react_native
React Native鸿蒙化仓库
C++
190
267
kernelkernel
deepin linux kernel
C
22
6
RuoYi-Vue3RuoYi-Vue3
🎉 (RuoYi)官方仓库 基于SpringBoot,Spring Security,JWT,Vue3 & Vite、Element Plus 的前后端分离权限管理系统
Vue
901
537
openGauss-serveropenGauss-server
openGauss kernel ~ openGauss is an open source relational database management system
C++
141
188
金融AI编程实战金融AI编程实战
为非计算机科班出身 (例如财经类高校金融学院) 同学量身定制,新手友好,让学生以亲身实践开源开发的方式,学会使用计算机自动化自己的科研/创新工作。案例以量化投资为主线,涉及 Bash、Python、SQL、BI、AI 等全技术栈,培养面向未来的数智化人才 (如数据工程师、数据分析师、数据科学家、数据决策者、量化投资人)。
Jupyter Notebook
62
59
nop-entropynop-entropy
Nop Platform 2.0是基于可逆计算理论实现的采用面向语言编程范式的新一代低代码开发平台,包含基于全新原理从零开始研发的GraphQL引擎、ORM引擎、工作流引擎、报表引擎、规则引擎、批处理引引擎等完整设计。nop-entropy是它的后端部分,采用java语言实现,可选择集成Spring框架或者Quarkus框架。中小企业可以免费商用
Java
8
0
openHiTLSopenHiTLS
旨在打造算法先进、性能卓越、高效敏捷、安全可靠的密码套件,通过轻量级、可剪裁的软件技术架构满足各行业不同场景的多样化要求,让密码技术应用更简单,同时探索后量子等先进算法创新实践,构建密码前沿技术底座!
C
376
387
CangjieCommunityCangjieCommunity
为仓颉编程语言开发者打造活跃、开放、高质量的社区环境
Markdown
1.1 K
0
note-gennote-gen
一款跨平台的 Markdown AI 笔记软件,致力于使用 AI 建立记录和写作的桥梁。
TSX
87
4