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

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

HarmonyOS
2024-10-17 11:44:22
2251浏览
收藏 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,否则正常组件无法响应事件  
}
  • 1.
  • 2.
  • 3.
  • 4.
  • 5.
  • 6.
  • 7.
  • 8.
  • 9.
  • 10.
  • 11.
  • 12.
  • 13.
  • 14.
  • 15.
  • 16.
  • 17.
  • 18.
  • 19.
  • 20.

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

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

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())  
  }  
}
  • 1.
  • 2.
  • 3.
  • 4.
  • 5.
  • 6.
  • 7.
  • 8.
  • 9.
  • 10.
  • 11.
  • 12.
  • 13.
  • 14.
  • 15.
  • 16.
  • 17.
  • 18.
  • 19.
  • 20.
  • 21.
分享
微博
QQ
微信
回复
2024-10-17 17:38:57
相关问题
HarmonyOS setInterval如何立即执行一次
1126浏览 • 1回复 待解决
HarmonyOS 每秒执行一次的函数
1079浏览 • 2回复 待解决
HarmonyOS 如何只取消某一次的监听
856浏览 • 1回复 待解决
HarmonyOS 如何 app 添加水印
1225浏览 • 1回复 待解决
HarmonyOS 如何图片增加文字水印
731浏览 • 1回复 待解决
HarmonyOS web组件拦截每一次跳转
759浏览 • 1回复 待解决
HarmonyOS里面不能一次创建多级目录
1163浏览 • 1回复 待解决
HarmonyOS flutter run 会自动uninstall 一次
878浏览 • 1回复 待解决
动画如何做渲染一次不消失
8659浏览 • 1回复 待解决