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

news2024/10/25 2:24:54

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

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

在 Controller 层对系统作防御性编程

简介 Web 开发中无论是 MVC 还是 DDD 架构 Controller 层都是系统的门面,既对外的接口,对内的接口,一般情况下任何错误必须组织在 Controller 层 如何作 在 Controller 层中的接口使用 try-catch Slf4j RestController("/") Re…

MobileNetV2实现实时口罩检测tensorflow

项目源码获取方式见文章末尾! 回复暗号:13,免费获取600多个深度学习项目资料,快来加入社群一起学习吧。 **《------往期经典推荐------》**项目名称 1.【Informer模型复现项目实战】 2.【卫星图像道路检测DeepLabV3Plus模型】 3.【…

[LeetCode] 230. 二叉搜索树中第K小的元素

题目描述: 给定一个二叉搜索树的根节点 root ,和一个整数 k ,请你设计一个算法查找其中第 k 小的元素(从 1 开始计数)。 示例 1: 输入:root [3,1,4,null,2], k 1 输出:1示例 2&am…

《计算机视觉》—— 基于 dlib 库的方法将两张人脸图片进行换脸

声明:此篇文章所用的明星照片只为用于演示代码的效果,无诋毁她人肖像之意 一、案例实现的思想 此案例的核心是基于人脸68个关键点检测模型来实现的,人脸68个关键带点检测后的效果如下: 通过对上图中红色区域的转换,…

项目管理必备:如何快速创建项目交付时间表

“不做准备,就准备失败”。项目的成功很大程度上取决于前期规划的充分性和质量。 项目交付时间表是项目管理中一个重要的工具,通过将项目分解为可管理的区块来组织工作。该方法使管理者可以创建分步的工作路径,并展示项目的宏观视图&#xff…

诺贝尔颁给AI啦,没想到高性能计算CHPC也发力了!

诺贝尔化学奖垂青 AlphaFold 3 2020 年 12 月,AlphaFold 2 发布。相较于之前实验成本高、耗时长、蛋白质结构解析困难的传统方法,AlphaFold 2 可以通过深度学习技术,仅需几小时就能准确地预测蛋白质的三维结构,极大地加速了生物…

基于Multisim的水位测量电路设计与仿真

1.利用LED指示灯显示水位(最低水位、1/4、1/2、3/4、最高水位)。 2.达到最高水位时,自动报警。

uiautomatorviewer安卓9以上正常使用及问题处理

一、安卓9以上使用uiautomatorviewer问题现象 打开Unexpected error while obtaining UI hierarchy 问题详情 Unexpected error while obtaining UI hierarchy java.lang.reflect.InvocationTargetException 二、问题处理 需要的是替换对应D:\software\android-sdk-windows…

AI自动生成PPT哪个软件好?智能生成PPT不再熬夜做课件

大概这世上,都是职场牛马对“PPT”这三个字母的头痛反应最大吧! 是的,就连各个年级段的老师也是很头痛——愁着怎样能在排版整齐的情况下,将必考知识点都呈现在PPT每一张幻灯片页面里...... 近期打听到用人工智能生成ppt课件&am…

域渗透相关内网 或 域AD环境搭建 域环境收集方式方法命令 查看 检测域控主机或者域内主机是否安装杀软方式

目录 域基础知识点知道这些就可以了 域 域的优点以及作用 域控 活动目录 活动目录主要功能 域环境搭建操作步骤: 域环境信息收集 信息收集工具 服务端客户端启动方式 CS操作部分 进行信息收集 信息收集操作 域基础知识点知道这些就可以了 域 域模型就是针对大…

MySQL——数据库

什么是数据库 数据库(DB , DataBase)概念:数据仓库,软件,安装在操作系统(window,linux,max,...)之上学习数据库最重要的就是学习SQL语句存储500万以下的数据…

HTML5_标签_各类表格的实现

目录 1. 表格标签 1.1 表格的主要作用 1.2 表格的基本语法 1.3 表头单元格标签 1.4 表格属性 案例分析 先制作表格的结构. 后书写表格属性. 代码示例: 1.5 表格结构标签 1.6 合并单元格 合并单元格方式: 目标单元格:(写合并代码) 合并单元…

蓝桥杯——搜索

搜索 DFS基础回溯 回溯法简介: 回溯法一般使用DFS(深度优先搜索)实现,DFS是一种遍历或搜索图、树或图像等数据结构的算法,当然这个图、树未必要存储下来(隐式处理就是回溯法),常见…

shell脚本语法详解

目录 shell语法基础 指定shell解析器 注释 运行 变量 定义变量 引用变量 清除变量值 从键盘获取值 输入单值 添加输入提示语 读取多值 ​编辑 定义只读变量 环境变量 设置环境变量与查看环境变量 特殊变量 三种引号的作用与区别 小括号与大括号 参数传递 位…

【HuggingFace 如何上传数据集 (2) 】国内网络-稳定上传图片、文本等各种格式的数据

【HuggingFace 下载】diffusers 中的特定模型下载,access token 使用方法总结【HuggingFace 下载中断】Git LFS 如何下载指定文件、单个文件夹?【HuggingFace 如何上传数据集】快速上传图片、文本等各种格式的数据 上文的方法因为是 https 协议&#xf…

CORS预检请求配置流程图 srpingboot和uniapp

首先要会判断预检请求 还是简单请求 简单请求 预检请求 #mermaid-svg-1R9nYRa7P9Pll4AK {font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}#mermaid-svg-1R9nYRa7P9Pll4AK .error-icon{fill:#552222;}#mermaid-svg-1R9nYRa7P9Pll4…

JAVA Maven 的安装与配置

一、下载地址 官方网站:Maven – Download Apache Maven 我这里是3.8.6版本 二、安装步骤 maven安装之前要先安装jdk,请确保你的系统已经安装了jdk环境。 1.将下载好的 Maven 进行解压 apache-maven-3.6.8-bin.zip 2.配置本地仓库:修改 conf/settin…

HDU RSA

翻译成中文后&#xff1a; 思路&#xff1a;由题易得&#xff0c;d * e y * f ( n ) 1 ,且gcd ( e , f ( n ) ) 1,所以用扩展欧几里得求出 d &#xff0c;但要保证 d 是非负的&#xff0c;最有用快速幂求出每个字符即可。 #include<bits/stdc.h> using namespace std;…

【Web前端概述】

HTML 是用来描述网页的一种语言&#xff0c;全称是 Hyper-Text Markup Language&#xff0c;即超文本标记语言。我们浏览网页时看到的文字、按钮、图片、视频等元素&#xff0c;它们都是通过 HTML 书写并通过浏览器来呈现的。 一、HTML简史 1991年10月&#xff1a;一个非正式…

第 6 章 Kafka-Eagle 监控 和 Kafka-Kraft 模式

Kafka-Eagle 框架可以监控 Kafka 集群的整体运行情况&#xff0c;在生产环境中经常使用。 6.1 MySQL 环境准备 Kafka-Eagle 的安装依赖于 MySQL &#xff0c; MySQL 主要用来存储可视化展示的数据。如果集 群中之前安装过 MySQL 可以跨过该步。 6.2 Kafka 环境准备 …