前言屏幕信息是UI适配的基础数据包括屏幕宽度、高度、密度等。pura/harmony-utils的DisplayUtil封装了屏幕信息获取方法帮助开发者快速获取屏幕参数实现多设备适配。本文将从API说明、代码实战、进阶用法、常见问题等多个维度进行全面讲解帮助开发者快速掌握并应用到实际项目中。一、DisplayUtil基础核心APIDisplayUtil提供了以下屏幕信息获取方法方法说明返回类型使用场景getWidth()获取屏幕宽度vpnumber响应式布局getHeight()获取屏幕高度vpnumber页面布局getDensity()获取屏幕密度number尺寸换算getDensityPixels()获取密度DPInumber资源选择getScaledDensity()获取缩放密度number字体适配1.1 核心特性简洁易用封装复杂API为一行调用降低使用门槛类型安全完整的TypeScript类型定义编译期即可发现错误异常处理内置异常捕获机制避免运行时崩溃多设备适配为不同屏幕尺寸的适配提供数据支撑1.2 屏幕密度与DPI对照密度等级DPI范围density值典型设备mdpi120-1601.0低密度设备hdpi160-2401.5中密度设备xhdpi240-3202.0高密度设备xxhdpi320-4803.0超高密度设备二、完整使用步骤2.1 安装依赖ohpminstallpura/harmony-utils2.2 获取屏幕尺寸import{DisplayUtil}frompura/harmony-utils;Button(获取屏幕尺寸).width(100%).onClick((){try{letwidthDisplayUtil.getWidth();letheightDisplayUtil.getHeight();this.result屏幕宽度:${width}vp\n屏幕高度:${height}vp;}catch(e){this.result异常: e;}})2.3 获取屏幕密度Button(获取屏幕密度).width(100%).onClick((){try{letdensityDisplayUtil.getDensity();letdpiDisplayUtil.getDensityPixels();this.result密度:${density}\nDPI:${dpi};}catch(e){this.result异常: e;}})三、完整页面示例import{DisplayUtil}frompura/harmony-utils;EntryComponentstruct DisplayDemo{Stateresult:string;build(){Column({space:12}){Button(获取全部屏幕信息).width(100%).onClick((){try{letwidthDisplayUtil.getWidth();letheightDisplayUtil.getHeight();letdensityDisplayUtil.getDensity();this.result宽度:${width}vp\n高度:${height}vp\n密度:${density};}catch(e){this.result异常: e;}});Text(this.result).fontSize(14).fontColor(#333333)}.padding(16)}}四、进阶用法4.1 响应式布局判断import{DisplayUtil}frompura/harmony-utils;functiongetLayoutType():string{letwidthDisplayUtil.getWidth();if(width840)return三列布局;if(width600)return双列布局;return单列布局;}4.2 vp与px互转functionvp2px(vp:number):number{returnvp*DisplayUtil.getDensity();}functionpx2vp(px:number):number{returnpx/DisplayUtil.getDensity();}五、注意事项响应式布局根据屏幕宽度选择单列/双列布局尺寸适配根据密度换算px和vp多设备适配根据屏幕参数调整UI布局初始化依赖使用前需确保AppUtil.init()已调用动态变化折叠屏设备屏幕尺寸可能变化六、常见问题Q1: getWidth()返回的是物理像素还是vp返回的是vp虚拟像素已经过密度换算可直接用于布局。Q2: 折叠屏设备屏幕尺寸会变化吗会变化建议使用DisplayUtil.onDisplayChange()监听屏幕变化。Q3: getDensity()和getDensityPixels()有什么区别getDensity()返回密度比例如2.0、3.0getDensityPixels()返回DPI值如320、480。Q4: 如何判断当前是手机还是平板根据屏幕最短边判断通常最短边600vp为平板级别设备。总结DisplayUtil的屏幕信息获取方法为多设备适配提供了基础数据。本文详细介绍了核心API、使用步骤、完整示例、进阶用法以及常见问题的解决方案。开发者可以根据屏幕尺寸和密度动态调整布局确保应用在不同设备上都有良好的显示效果。本文基于pura/harmony-utils工具库更多功能请参考官方文档与后续系列文章。