页面级像素取整

页面级像素取整的目标是将像素取整模式设为页面的上下文属性,以便在页面层面设置像素取整模式。

说明:

  • 本模块从API version 18开始支持。后续版本如有新增内容,则采用上角标单独标记该内容的起始版本。
  • 若出现像素取整问题,且使用组件级像素取整无法解决时,建议尝试采用PIXEL_ROUND_AFTER_MEASURE模式。
  • 在PIXEL_ROUND_AFTER_MEASURE模式下,组件会在测量大小结束时进行取整,即最终大小相比于PIXEL_ROUND_ON_LAYOUT_FINISH模式可能扩大1px。
  • 页面级像素取整与组件级像素取整的区别在于:页面级像素取整调整整个页面的像素取整时机,而组件级像素取整调整特定组件在特定方向上的像素取整对齐方式。

setPixelRoundMode

setPixelRoundMode(mode: PixelRoundMode): void

设置当前页面的像素取整模式。

原子化服务API: 从API version 18开始,该接口支持在原子化服务中使用。

系统能力: SystemCapability.ArkUI.ArkUI.Full

参数:

参数名 类型 必填 说明
mode PixelRoundMode 像素取整模式。
默认值:PixelRoundMode.PIXEL_ROUND_ON_LAYOUT_FINISH

示例:

// EntryAbility.ets
import { UIContext } from '@kit.ArkUI';
import { hilog } from '@kit.PerformanceAnalysisKit';

onWindowStageCreate(windowStage: window.WindowStage) {
   windowStage.loadContent('pages/Index', (err, data) => {
      let uiContext :UIContext = windowStage.getMainWindowSync().getUIContext();
      uiContext.setPixelRoundMode(PixelRoundMode.PIXEL_ROUND_AFTER_MEASURE);
      if (err.code) {
        hilog.error(0x0000, 'testTag', 'Failed to load the content. Cause: %{public}s', JSON.stringify(err) ?? '');
        return;
      }
      hilog.info(0x0000, 'testTag', 'Succeeded in loading the content. Data: %{public}s', JSON.stringify(data) ?? '');
    });
  }

getPixelRoundMode

getPixelRoundMode(): PixelRoundMode

获取当前页面的像素取整模式。

原子化服务API: 从API version 18开始,该接口支持在原子化服务中使用。

系统能力: SystemCapability.ArkUI.ArkUI.Full

返回值:

类型 说明
PixelRoundMode 当前页面的像素取整模式。

示例:

// EntryAbility.ets
import { UIContext } from '@kit.ArkUI';
import { hilog } from '@kit.PerformanceAnalysisKit';

onWindowStageCreate(windowStage: window.WindowStage) {
    windowStage.loadContent('pages/Index', (err, data) => {
      let uiContext: UIContext = windowStage.getMainWindowSync().getUIContext();
      console.info("pixelRoundMode : " + uiContext.getPixelRoundMode().valueOf());
      if (err.code) {
        hilog.error(0x0000, 'testTag', 'Failed to load the content. Cause: %{public}s', JSON.stringify(err) ?? '');
        return;
      }
      hilog.info(0x0000, 'testTag', 'Succeeded in loading the content. Data: %{public}s', JSON.stringify(data) ?? '');
    });
  }