HarmonyOS 鸿蒙Next 如何给windows添加全局水印并通过appstorage设置内容和管理开关?

发布于 1周前 作者 eggper 来自 鸿蒙OS

HarmonyOS 鸿蒙Next 如何给windows添加全局水印并通过appstorage设置内容和管理开关?

HarmonyOS 如何给windows添加全局水印并通过appstorage设置内容和管理开关?

2 回复

目前没有统一处理全局水印的方式,可以把水印样式定义成公共组件,可参考如下代码:

1、定义全局的水印组件

[@Entry](/user/Entry)
[@Component](/user/Component)
export struct WaterMarkComponent {
  build() {
    Column({ space: 10 }) {
      Text(“TestMark”)
      .fontSize(50)
        .fontColor(Color.Gray)
    }
    .width(‘100%’)
    .height(‘100%’)
    .backgroundColor("#51aaaaaa")
      .justifyContent(FlexAlign.Center)
  }
}

@Builder export function createWaterMark() { WaterMarkComponent() .hitTestBehavior(HitTestMode.None) // 必须设置其触摸测试为None或Transparent,否则正常组件无法响应事件 }

2、基于水印组件定义一个export的custombuilder,以供全局使用

@Builder
export function createWaterMark() {
WaterMarkComponent()
.hitTestBehavior(HitTestMode.None) // 必须设置其触摸测试为None或Transparent,否则正常组件无法响应事件
} 

3、在需要加水印页面的根节点上添加.overlay属性,并使用上述的custombuilder

import { promptAction } from ‘@kit.ArkUI’
import { createWaterMark } from ‘…/components/watermark’;

@Entry @Component struct TestMarkDemo { build() { Row() { Column() { Text(“click”) .fontSize(50) .fontWeight(FontWeight.Bold) .onClick(() => { // 测试对正常事件的响应 promptAction.showToast({ message: “test” }) }) } .width(‘100%’) } .height(‘100%’) .overlay(createWaterMark()) } }

另外可以通过用户首选项实现数据持久化,可参考以下文档:

https://developer.huawei.com/consumer/cn/doc/harmonyos-guides-V5/data-persistence-by-preferences-V5

在HarmonyOS 鸿蒙Next中,为windows(通常指应用窗口或界面)添加全局水印并通过AppStorage设置内容和管理开关,可以按照以下步骤操作:

  1. 创建水印组件:使用Canvas绘制水印文字,并设置为透明背景。该组件应包含水印的显示逻辑,如是否显示及水印内容。
  2. 使用AppStorage:通过AppStorage存储水印的显示状态和内容。利用@StorageProp@StorageLink装饰器实现数据的全局存储与同步。
  3. 在主页面或根页面引入水印组件:通过Stack组件或其他布局方式,将水印组件叠加在页面背景上。
  4. 实现水印的显示状态和内容管理:在应用初始化时设置水印的默认状态和内容,并在需要时通过AppStorage的API更新这些值。

通过上述步骤,可以实现在HarmonyOS 鸿蒙Next中为windows添加全局水印,并通过AppStorage设置内容和管理开关的功能。如果问题依旧没法解决请联系官网客服,官网地址是:https://www.itying.com/category-93-b0.html

回到顶部