当前位置: 首页 > wzjs >正文

城乡建设部注册建筑师网站合肥瑶海区房价

城乡建设部注册建筑师网站,合肥瑶海区房价,在线玩游戏网页,做网站到八方资源网怎么样在鸿蒙Next中,为App全局添加水印可以通过以下方式实现,其中通过窗口添加水印是一种常见且高效的方式。以下是具体方案和实现细节: 一、全局水印的实现方式 1. 窗口叠加水印(首选、推荐) 原理:在应用的主窗口…

在鸿蒙Next中,为App全局添加水印可以通过以下方式实现,其中通过窗口添加水印是一种常见且高效的方式。以下是具体方案和实现细节:


一、全局水印的实现方式

1. 窗口叠加水印(首选、推荐)

原理:在应用的主窗口(Window)上叠加一个半透明的水印层,覆盖所有页面内容。
优势:实现简单、性能较好,无需侵入业务逻辑。
实现步骤

(1) 创建全局水印组件

通过Stack布局在主页面内容上叠加水印层,通过设置hitTestBehavior(HitTestMode.Transparent)控制水印层不拦截点击事件,可结合文章<鸿蒙next开发-struct如何封装共用模块>把水印功能放到公共父模块里边去

// WatermarkComponent.ets
@Component
export struct WatermarkComponent {@State watermarkText: string = "水印内容" build() {Stack() {// 主应用内容(通过插槽传递)Column() {Slot() // 占位符,用于承载实际页面内容}// 水印层(覆盖整个窗口)Flex({ direction: FlexDirection.Row, wrap: FlexWrap.Wrap }) {ForEach(Array(20).fill(0), (_, index) => {Text(this.watermarkText).fontSize(16).fontColor("#999999").opacity(0.3).rotate({ angle: -30 }).margin(20)})}.width('100%').height('100%').backgroundColor(Color.Transparent).hitTestBehavior(HitTestMode.Transparent)// 关键:设置水印层不拦截点击事件,否则水印下按钮点击失效。}}
}
(2) 在入口页面应用水印
// MainPage.ets
@Entry
@Component
struct MainPage {build() {WatermarkComponent() {// 此处放置实际页面内容Column() {Text("这是应用的主页面").fontSize(24)// 其他组件...}}}
}
(3) 动态更新水印内容

可通过@State@Link实现水印动态化(如用户ID、时间戳):

@State watermarkText: string = `用户:张三 ${new Date().toLocaleString()}`// 更新水印
updateWatermark() {this.watermarkText = `用户:张三 ${new Date().toLocaleString()}`
}

2. 全局悬浮窗水印

适用场景:需要跨多个Ability或独立于页面层级的水印。
实现步骤

(1) 创建悬浮窗服务
// WatermarkService.ets
import window from '@ohos.window';export class WatermarkService {private static instance: WatermarkService | null = null;private watermarkWindow: window.Window | null = null;static getInstance() {if (!this.instance) {this.instance = new WatermarkService();}return this.instance;}async showWatermark() {try {this.watermarkWindow = await window.createWindow("watermark", window.WindowType.TYPE_FLOAT);await this.watermarkWindow.moveTo(0, 0);await this.watermarkWindow.resize(window.Size.FULL_SCREEN);await this.watermarkWindow.setTouchable(false); // 禁止交互await this.watermarkWindow.loadContent("pages/WatermarkPage");await this.watermarkWindow.show();} catch (err) {console.error('悬浮窗创建失败:', err);}}
}
(2) 初始化全局水印
// App.ets
import { WatermarkService } from './WatermarkService';export default class App {onCreate() {WatermarkService.getInstance().showWatermark(); // 应用启动时显示水印}
}

3. 自定义Ability水印

适用场景:需要与业务逻辑深度绑定的动态水印。
实现步骤

// WatermarkAbility.ets
import Ability from '@ohos.application.Ability';export default class WatermarkAbility extends Ability {onWindowStageCreate(windowStage) {windowStage.loadContent("pages/WatermarkPage", (err) => {if (err) console.error("水印页面加载失败:", err);});}
}

二、技术对比与选型建议

方案优点缺点适用场景
窗口叠加水印

实现简单、性能高、无额外权限

需修改页面层级结构

单Ability应用、快速集成

全局悬浮窗

跨Ability生效、独立层级

需要悬浮窗权限、性能开销略高

企业级应用、高安全需求

自定义Ability

灵活控制水印生命周期

实现复杂度高

需要动态控制水印的场景


三、安全增强技巧

  1. 防截图绕过

    // 禁止截屏(需在config.json配置权限)
    import window from '@ohos.window';
    window.getTopWindow().then(win => {win.setWindowPrivacyMode(true); // 开启隐私模式
    });
  2. 动态水印

    // 绑定设备信息
    import deviceInfo from '@ohos.deviceInfo';
    this.watermarkText = `设备ID: ${deviceInfo.deviceId}`;
  3. 混淆水印元素

    // 随机角度和位置
    .rotate({ angle: -30 + Math.random() * 10 })
    .position({ x: `${Math.random() * 100}%`, y: `${Math.random() * 100}%` })

四、总结

  1. 窗口叠加水印是最高效的实现方式,适合大多数场景。

  2. 若需跨Ability或更高安全级别,推荐全局悬浮窗方案

  3. 通过Stack布局和Flex组件的灵活组合,可实现高密度、动态更新的水印效果。

    关注我获取更多知识或者投稿

    16407349f8dba5693e64d54dfc7a81cf.jpeg

    4d0acd8f804e34f88a12a757064275ae.jpeg

http://www.dtcms.com/wzjs/435795.html

相关文章:

  • 怎么用sharepoint做网站2023年新闻摘抄十条
  • 借贷网站建设方案杭州明开seo
  • 沧州做网站google安卓手机下载
  • 赛事竞猜网站开发网站排名优化快速
  • 宁波网站建设电话咨询2023今日新闻头条
  • 独立网站做跨境电商可以行吗百度网页推广费用
  • 淘宝网官方网站电脑版郑州seo优化顾问热狗
  • 如何给网站做提升2021百度模拟点击工具
  • 一般做网站什么价格重庆seo团队
  • joomla网站迁移百度搜索推广操作简要流程
  • 松江做微网站台州seo优化
  • 湛江做网站服务热线怎样能在百度上搜索到自己的店铺
  • wordpress主题漏洞北京公司排名seo
  • 帮别人备案网站吗网络推广主要工作内容
  • 龙岩网站设计制作广告软文范例200字
  • 做网站怎么留接口黄页88网
  • 网站安全维护内容百度怎么做推广和宣传
  • 网站建设数据库实训体会百度云资源搜索入口
  • 兼职做调查哪个网站好线下引流的八种推广方式
  • 怎么免费制作企业网站可以进入任何网站的浏览器
  • 手机适配网站google搜索引擎入口下载
  • 使用ai做网站设计网络推广网站的方法
  • 基于个性化推荐的电商网站设计与实现plc培训机构哪家最好
  • 模板网站源码2021小学生新闻摘抄
  • 服装厂做1688网站效果好不好网店代运营靠谱吗
  • 大型网站建设部署方案韩国最新新闻
  • 石家庄市高新区建设局网站谷歌paypal官网
  • 用订制音乐网站做的音乐算原创吗人工智能培训班收费标准
  • 自己做的网站怎么传入外网如何让自己的网站快速被百度收录
  • 怎么做网站版面西地那非能提高硬度吗