HarmonyOS 鸿蒙Next 如何做一个应用最顶层的遮罩(护眼模式),可以挡在各种弹窗,bindsheet之上

HarmonyOS 鸿蒙Next 如何做一个应用最顶层的遮罩(护眼模式),可以挡在各种弹窗,bindsheet之上 如何做一个应用最顶层的遮罩(护眼模式),可以挡在各种弹窗,bindsheet之上

2 回复
  1. 可以设置应用子窗口,能够挡在弹窗,bindsheet之上

参考文档:设置应用子窗口

  1. 另外如果是要实现护眼模式可以参考用深色模式实现:深色模式实现

更多关于HarmonyOS 鸿蒙Next 如何做一个应用最顶层的遮罩(护眼模式),可以挡在各种弹窗,bindsheet之上的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html


在HarmonyOS鸿蒙系统中,要做一个应用最顶层的遮罩(如护眼模式),能够覆盖在各种弹窗和BottomSheet之上,你可以利用系统的CanvasLayer组件。CanvasLayer允许你在屏幕上的任意位置绘制内容,并且可以设置其层级,使其能够覆盖其他UI元素。

具体步骤如下:

  1. 创建CanvasLayer:在你的布局文件中添加一个CanvasLayer组件。

  2. 设置层级:通过CanvasLayerz属性设置其层级,确保它位于最顶层。

  3. 绘制遮罩:在CanvasLayeronDraw回调中,使用Canvas API绘制一个覆盖全屏的遮罩。

  4. 处理护眼模式:根据护眼模式的开启状态,调整遮罩的颜色或透明度,以达到护眼效果。

  5. 确保遮罩始终在最前:在应用中处理弹窗和BottomSheet显示时,确保CanvasLayer的层级始终最高。

示例代码(伪代码,具体实现需根据鸿蒙开发文档调整):

<!-- 布局文件 -->
<CanvasLayer id="overlayCanvas" z="1000" />
// 在你的Ability或Page中
@Override
protected void onStart(Intent intent) {
    super.onStart(intent);
    CanvasLayer overlayCanvas = findComponentById(ResourceTable.Id_overlayCanvas);
    overlayCanvas.setOnDrawListener((component, canvas) -> {
        // 绘制护眼遮罩
        Paint paint = new Paint();
        paint.setColor(Color.RED); // 示例颜色,根据护眼模式调整
        paint.setAlpha(128); // 透明度,根据护眼模式调整
        canvas.drawRect(0, 0, component.getWidth(), component.getHeight(), paint);
    });
}

如果问题依旧没法解决请联系官网客服,官网地址是 https://www.itying.com/category-93-b0.html

回到顶部