鸿蒙软件开发中常见的如何快速自动生成二维码?QRCode组件

QRCode

用于显示单个二维码的组件。

说明:

该组件从API Version 7开始支持。后续版本如有新增内容,则采用上角标单独标记该内容的起始版本。

二维码组件的像素点数量与内容有关,当组件尺寸过小时,可能出现无法展示内容的情况,此时需要适当调整组件尺寸。

子组件

接口

QRCode(value: string)

卡片能力: 从API version 9开始,该接口支持在ArkTS卡片中使用。

原子化服务API: 从API version 11开始,该接口支持在原子化服务中使用。

系统能力: SystemCapability.ArkUI.ArkUI.Full

参数:

参数名类型必填说明
valuestring二维码内容字符串。最大支持512个字符,若超出,则截取前512个字符。
说明:
该字符串内容确保有效,不支持null、undefined以及空内容。

属性

除支持通用属性外,还支持以下属性:

color

color(value: ResourceColor)

设置二维码颜色。

卡片能力: 从API version 9开始,该接口支持在ArkTS卡片中使用。

原子化服务API: 从API version 11开始,该接口支持在原子化服务中使用。

系统能力: SystemCapability.ArkUI.ArkUI.Full

参数:

参数名类型必填说明
valueResourceColor二维码颜色。默认值:'#ff182431'

backgroundColor

backgroundColor(value: ResourceColor)

设置二维码背景颜色。

卡片能力: 从API version 9开始,该接口支持在ArkTS卡片中使用。

原子化服务API: 从API version 11开始,该接口支持在原子化服务中使用。

系统能力: SystemCapability.ArkUI.ArkUI.Full

参数:

参数名类型必填说明
valueResourceColor二维码背景颜色。
默认值:Color.White
从API version 11开始,默认值改为'#ffffffff'。

contentOpacity11+

contentOpacity(value: number | Resource)

设置二维码内容颜色的不透明度。不透明度最小值为0,最大值为1。

原子化服务API: 从API version 12开始,该接口支持在原子化服务中使用。

系统能力: SystemCapability.ArkUI.ArkUI.Full

参数:

参数名类型必填说明
valuenumber | Resource二维码内容颜色的不透明度。
默认值:1

事件

通用事件支持点击事件、触摸事件、挂载卸载事件。

点击事件(onClick)

点击事件是最常见的用户交互方式之一。在ArkUI中,你可以为QRcode组件添加一个点击监听器,当用户点击二维码时触发指定的回调函数。通常,这个回调函数会执行某些逻辑操作,比如打开一个网页或者跳转到另一个页面。

@Entry
@Component
struct QRCodeExample {
  private value: string = 'http://example.com'
  
  onClickQRCode() {
    // 在这里处理点击事件,比如打开网页
    console.log('QR Code clicked');
  }

  build() {
    QRCode(this.value)
      .width(140)
      .height(140)
      .onClick(() => {
        this.onClickQRCode()
     }) // 添加点击事件监听器
  }
}

触摸事件

除了点击事件,还可以为QRCode组件添加触摸事件。触摸事件包括了 onTouchStart、onTouchMore、onTouchEnd、onTouchCancel等。这些事件可以用来实现复杂的交互逻辑,比如手势识别。

@Entry
@Component
struct QRCodeExample {
  private value: string = 'http://example.com'
  
  onTouchStartQRCode(event) {
    console.log('Touch started at:', event);
  }
  
  onTouchMoveQRCode(event) {
    console.log('Touch moving at:', event);
  }
  
  onTouchEndQRCode(event) {
    console.log('Touch ended at:', event);
  }
  
  onTouchCancelQRCode(event) {
    console.log('Touch canceled at:', event);
  }

  build() {
    QRCode(this.value)
      .width(140)
      .height(140)
      .onTouchStart((event) => this.onTouchStartQRCode(event))
      .onTouchMove((event) => this.onTouchMoveQRCode(event))
      .onTouchEnd((event) => this.onTouchEndQRCode(event))
      .onTouchCancel((event) => this.onTouchCancelQRCode(event))
  }
}

在上述代码中,我们为QRCode组件添加了四个触摸事件监听器,并且定义了相应的处理函数。这样就可以捕捉用户的触摸动作,并根据这些动作做出响应。

注意事项
  1. 事件处理逻辑:确保在事件处理函数中实现适当的逻辑,以防止错误或意外的行为。
  2. 性能考虑:频繁的触摸事件可能会导致性能问题,尤其是在处理大量数据或复杂计算的情况下。
  3. 用户体验:设计触摸交互时要考虑到用户体验,避免过于复杂或不易理解的操作流程。

挂载(mount)事件

当一个组件从视图树中移除时,即组件被卸载,这时候可以触发卸载事件。在卸载事件中,你可以执行一些清理工作,比如释放资源、取消监听器等。

如何实现挂载和卸载事件

在ArkUI中,虽然直接的mountunmount事件可能不是作为独立的事件属性存在,但可以通过组件的生命周期钩子来实现类似的功能。对于ArkTS组件,你可以利用类组件的生命周期方法来处理挂载和卸载逻辑。

下面是一个使用ArkUI的类组件来实现QRCode组件的挂载和卸载事件的例子:

import { Component, State, Element } from '@ohos.arkui';

@Component
struct QRCodeWithLifecycle {
  @State qrValue: string = 'http://example.com';

  mounted() {
    console.log('QRCode component mounted');
    // 执行挂载时的操作,比如获取数据、注册监听器等
  }

  unmounted() {
    console.log('QRCode component unmounted');
    // 执行卸载时的操作,比如释放资源、取消监听器等
  }

  build() {
    Column({
      alignItems: Alignment.Center,
      justifyContent: JustifyContent.Center,
      children: [
        QRCode(this.qrValue)
          .width(140)
          .height(140),
        Text('Tap to interact with QR code')
          .width('100%')
          .fontSize(20)
          .fontColor('#0000FF')
      ]
    });
  }
}

在这个例子中,我们定义了一个名为QRCodeWithLifecycle的类组件,并且实现了mountedunmounted方法。这两个方法分别在组件挂载和卸载时被调用。在mounted方法中,你可以执行初始化操作;而在unmounted方法中,可以进行清理工作。

注意事项

  1. 资源管理:确保在组件卸载时释放所有占用的资源,以避免内存泄漏等问题。
  2. 状态保存与恢复:如果组件中有状态需要保存,在卸载时应该保存状态,在重新挂载时恢复状态。
  3. 测试与调试:在开发过程中,确保测试组件在不同生命周期阶段的行为,特别是在复杂的场景下。

示例

// xxx.ets
@Entry
@Component
struct QRCodeExample {
  private value: string = 'hello world'
  build() {
    Column({ space: 5 }) {
      Text('normal').fontSize(9).width('90%').fontColor(0xCCCCCC).fontSize(30)
      QRCode(this.value).width(140).height(140)

      // 设置二维码颜色
      Text('color').fontSize(9).width('90%').fontColor(0xCCCCCC).fontSize(30)
      QRCode(this.value).color(0xF7CE00).width(140).height(140)

      // 设置二维码背景色
      Text('backgroundColor').fontSize(9).width('90%').fontColor(0xCCCCCC).fontSize(30)
      QRCode(this.value).width(140).height(140).backgroundColor(Color.Orange)

      // 设置二维码不透明度
      Text('contentOpacity').fontSize(9).width('90%').fontColor(0xCCCCCC).fontSize(30)
      QRCode(this.value).width(140).height(140).color(Color.Black).contentOpacity(0.1)
    }.width('100%').margin({ top: 5 })
  }
}

qrcode

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/898611.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

电脑输入账号密码后,屏幕黑屏只有鼠标解决办法

最近办公电脑出现了两次输入密码后,屏幕黑屏之后鼠标能动的问题,只能有手机查一些资料尝试自己解决,具体什么原因导致的暂时还不清楚。解决这个问题大概有两个方案吧,第一次黑屏用的第一个方案,第二次发现第一个方案不好用了就用的第二个方案。 方案一 …

【Python-AI篇】人工智能机器学习

1. 机器学习简介 1.1 机器学习流程 获取数据 SKLEARN数据集查看数据分布数据集分类 数据基本处理 缺省值处理缩小数据范围异常数据处理数据分割类别不平衡数据处理方式 特征工程机器学习(算法) K-近邻算法线性回归线性回归的改进-岭回归逻辑回归(分类)决策树朴素贝叶斯SVMEM算…

创建型模式-----(单例模式)

目录 基本概念 饿汉式: 懒汉式: 上锁双判空版本 std::call_once版本: C11标准后局部静态变量版本: 项目中单例模板的应用 基本概念 单例模式:在程序运行期间只有一份,与程序生存周期一样,…

记一行代码顺序引起的事故

01 前情回顾 在这里跟同学们分享一个前几天在线上遇见的 bug… bug描述:客户端轮询服务端接口获取数据做打字机效果展示,会偶现输出到一半就停止不动了,但是数据还没输出完(如下图,到红色部分就卡住了)。…

【Axure高保真原型】移动案例

今天和大家分享多个常用的移动案例的原型模板,包括轮盘滑动控制元件移动、页面按钮控制元件移动、鼠标单击控制元件移动、元件跟随鼠标移动、鼠标拖动控制元件移动、键盘方向键控制元件移动,具体效果可以点击下方视频观看或打开下方预览地址查看哦 【原…

虚拟装配解决方案:在虚拟现实中实现移动零件与三维模型碰撞检测

装配过程占产品开发时间和成本的很大一部分。在投入生产前对产品装配进行碰撞检测能够有效的降低因设计疏忽所导致的重复试错所导致的成本增加,并进一步降低设计审核整体流程所需时间。 选择、移动和操作3D模型的各个部分 TechViz多通道软件具有通用零件识别引擎&am…

Core webapi<1>特性 Route、Bind、HttpGet、Consumes、Produces

微软资料 Consumes Produces 让 API 返回 text/json 类型的数据。因为默认情况下,API 返回数据使用 application/json 格式,所以,咱们要改为 text/json,就得用 Produces 特性。

Java最全面试题->Java基础面试题->JavaEE面试题->Web应用服务器面试题

文章目录 Web应用服务器面试题Tomcat是什么?Tomcat缺省端口是多少,如何修改?Tomcat 有那几种Connector 运行模式?什么是Servlet?Servlet请求过程?Tomcat执行流程?Tomcat部署方式?什么是JBoss ?在JBoss 7…

UG NX12.0建模入门笔记:1.1 UG界面编辑

文章目录 一、用户默认设置:修改新建零件时的默认存储路径。二、用户默认设置:修改默认图纸的尺寸单位。三、如何移除不需要的工具栏?四、如何将角色设置成高级,以使用更多的功能?五、如何修改软件背景颜色&#xff1f…

w~自动驾驶合集9

我自己的原文哦~ https://blog.51cto.com/whaosoft/12320882 #自动驾驶数据集全面调研 自动驾驶技术在硬件和深度学习方法的最新进展中迅速发展,并展现出令人期待的性能。高质量的数据集对于开发可靠的自动驾驶算法至关重要。先前的数据集调研试图回顾这些数据集&…

取得六西格玛绿带培训证书有什么用?

六西格玛作为一套科学的管理方法和工具,已被广泛应用于各个行业。而六西格玛绿带培训证书,作为这一体系中的基础认证,不仅是对个人专业能力的认可,更是职业生涯中的一大助力。本文,天行健企业管理咨询公司旨在分享取得…

山东济南杰出思想家颜廷利:升命学说,当今世界前沿哲学思想

颜廷利教授的"升命学说"是一个将现代科技发展与中华传统文化相结合的当今世界前沿哲学教育理论框架,它是在传统哲学基础上的一种目前社会创新性思想体系。为了理解"升命学说"与传统哲学的不同之处,我们可以从以下几个方面来探讨&…

通过docker desktop拉取镜像打包镜像传输到其它服务器中

通过docker desktop拉取镜像打包镜像传输到其它服务器中 使用 docker save 命令将镜像保存为 tar 文件 docker save -o <path-for-tar-file> <image-name-with-tag>例如&#xff0c;如果想要保存名为 myimage:latest 的镜像&#xff0c;并将其保存到当前目录的 m…

【K8S系列】Kubernetes node节点NotReady问题及解决方案详解【已解决】

Kubernetes 集群中的每个节点都是运行容器化应用的基础。当节点状态显示为 NotReady 时,意味着该节点无法正常工作,这可能会导致 Pod 无法调度,从而影响整个应用的可用性。本文将深入分析节点不健康的各种原因、详细的排查步骤以及有效的解决方案。 一、节点不健康的原因 节…

Leetcode—1226. 哲学家进餐【中等】(多线程)

2024每日刷题&#xff08;185&#xff09; Leetcode—1226. 哲学家进餐 C实现代码 class DiningPhilosophers { public:mutex mx;DiningPhilosophers() {}void wantsToEat(int philosopher,function<void()> pickLeftFork,function<void()> pickRightFork,functi…

双十一开启极速达夜派;黑神话获泰国年度最佳游戏;AI 模型可帮助识别 17000 多种疾病的候选药物....| 网易数智日报

双 11 菜鸟在北京、上海、广州、杭州等城市开启「预售极速达夜派」服务 10 月 21 日&#xff0c;菜鸟在北京、上海、广州、杭州等城市开启「预售极速达夜派」服务&#xff0c;批量大促包裹实现小时级送达。 据介绍&#xff0c;在消费者支付尾款前&#xff0c;菜鸟供应链就已经…

闯关leetcode——190. Reverse Bits

大纲 题目地址内容 解题代码地址 题目 地址 https://leetcode.com/problems/reverse-bits/description/ 内容 Reverse bits of a given 32 bits unsigned integer. Note: Note that in some languages, such as Java, there is no unsigned integer type. In this case, …

使用excel.js(layui-excel)进行layui多级表头导出,根据单元格内容设置背景颜色,并将导出函数添加到toolbar

本段是菜狗子的碎碎念&#xff0c;解决办法请直接从第二段开始看。layui多级表头的导出&#xff0c;弄了两天才搞定&#xff0c;中途一度想放弃&#xff0c;还好坚持下来了。一开始用的是layui的toolbar里自带的那个导出&#xff0c;但是多级表头没有正常导出&#xff0c;单元格…

ORACLE SELECT INTO 赋值为空,抛出 NO DATA FOUND 异常

例子&#xff1a; DECLARE ORDER_NUM VARCHAR2(20); BEGIN SELECT S.ORDER_NUM INTO ORDER_NUM FROM SALES_ORDER S WHERE S.ID122344; DBMS_OUTPUT.PUT_LINE(单号: || ORDER_NUM); END; 在查询结果为空的情况下&#xff0c;以上代码会报错&#xff1a;未找到任何数据 解决方…

深度学习——循环神经网络RNN知识点小结(全)

前置知识: 序列模型--输出/输入中包含有序列数据的模型 特点: 1.输入/输出元素之间具有顺序关系, 不同顺序得到的结果不同 2.输入输出不定长, 比如问答系统, 聊天机器人 DL--RNN 小名:循环神经网络 外国小名: sequence model 定义: 专门设计用来处理序列数据的神经网络 应用: …