目录

打开相机进行拍照时,拍照预览区域尺寸异常

问题现象

使用XComponent渲染组件搭配Camera接口实现拍照功能时,页面拍照区域显示过小。

背景知识

问题定位

  1. 通过DevEco Studio自带的布局分析能力ArkUI Inspector查看页面布局,可见页面通过XComponent组件渲染。

  2. 由于现象是拍照区域大小异常,查询XComponent官方文档中跟大小,宽高,显示区域相关的API,发现通用属性中Width和Height属性以及setXComponentSurfaceRect方法都会影响XComponent的渲染显示区域。
  3. 因此建议检查代码中XComponent的宽高属性及setXComponentSurfaceRect方法中surfaceWidth和surfaceHeight的值设置的是否与设备屏幕宽高一致,如果这些值设置不一致,则会导致拍摄显示区域出现尺寸异常的现象。

分析结论

  1. 预览区域小是因为XComponent渲染组件的宽高的值设置未铺满屏幕,导致预览区域偏小。
  2. 预览区域取景内容看起来视角小是因为Surface宽高设置大于XComponent组件宽高,导致只显示了正常预览内容的一部分。

修改建议

  1. display.getDefaultDisplaySync获取当前显示设备的屏幕宽高。
  2. 一般来说,不需要特意调整Surface宽高,因为默认使用XComponent宽高。但有一种特殊情况:当XComponent的宽高比例与预览分辨率的宽高比例差异较大时可能会导致预览画面压缩或拉伸,此场景可以通过setXComponentSurfaceRect接口设置Surface宽高使其与预览分辨率的宽高比例保持一致,防止预览变形。