HarmonyOS 如何给应用所有或者部分界面一次性加上水印?

在HarmonyOS ArkUI中有类似快速处理水印的方案不?要如何处理?

HarmonyOS
2024-10-17 11:44:22
浏览
收藏 0
回答 1
待解决
回答 1
按赞同
/
按时间
superinsect

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

1、定义全局的水印组件。

@Entry  
@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())  
  }  
}
分享
微博
QQ
微信
回复
2024-10-17 17:38:57
相关问题
HarmonyOS 每秒执行一次的函数
148浏览 • 2回复 待解决
HarmonyOS 如何 app 添加水印
369浏览 • 1回复 待解决
HarmonyOS里面不能一次创建多级目录
429浏览 • 1回复 待解决
动画如何做渲染一次不消失
7712浏览 • 1回复 待解决
HarmonyOS 怎么手动代码加上trace
29浏览 • 1回复 待解决
文本添加上划线如何实现?
412浏览 • 1回复 待解决
有没有一次编译,多端部署的资料
341浏览 • 1回复 待解决
如何判断APP是否是第一次请求权限?
351浏览 • 1回复 待解决