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

【每日学点HarmonyOS Next知识】 状态变量、公共Page、可见区域变化回调、接收参数、拖拽排序控件

1、HarmonyOS 在定时器里面改变@state修饰的变量,无法更新UI吗?

将函数function写成了封装函数的形式就可以了

@Entry
@Component
struct Index {@State acSetValve: number = 0;aboutToAppear(): void {setInterval(() => {this.acSetValve += 200;console.log('hahhah' + this.acSetValve)} ,100)}build() {Row() {Column() {Text(this.acSetValve.toString()).fontSize(50).fontWeight(FontWeight.Bold)}.width('100%')}.height('100%')}
}
2、HarmonyOS 写一个公共的page,然后其他具体的page继承它,在公共page的做一些处理?

demo参考:

//主页面  FirstTest.ets
import { FirstTest2 } from "./FirstTest2"@Entry
@Component
struct FirstTest {@State message1: string = 'Hello World';// 显隐控制设置为不占用build() {Column() {Text("FirstTest:" + this.message1).fontSize(25).fontWeight(FontWeight.Bold)//FirstTest2页面数据传递参考API:https://developer.huawei.com/consumer/cn/doc/harmonyos-guides/ArkTS-link-0000001820999565#ZH-CN_TOPIC_0000001857916041__%E6%A6%82%E8%BF%B0//FirstTest2为Component修饰的组件,并且进行export,然后在FirstTest进行导入直接使用即可,可以多个页面复用FirstTest2({message2:this.message1});}}
}//复用组件  FirstTest2.ets
@Component
export struct FirstTest2 {@State test:string = "FirstTest2"@Link message2: string ;build() {Row() {Column() {Text("FirstTest2:" + this.test).fontSize(25).fontWeight(FontWeight.Bold)Text("FirstTest2:" + this.message2).fontSize(25).fontWeight(FontWeight.Bold)}.width('100%')}.height('100%')}
}
3、HarmonyOS onVisibleAreaChange事件没有触发?

添加onVisibleAreaChange事件监听,只有第一屏可以触发,切到第二屏没有触发。影响埋点上报

onVisibleAreaChange规格上不支持监控由改变offset引起的组件区域变化。若要实现切屏监控,请使用swiper组件。

文档参考:https://developer.huawei.com/consumer/cn/doc/harmonyos-references-V5/ts-container-swiper-V5

4、HarmonyOS router.pushNamedRoute参数传递 在接收页面怎么接收?

可以通过router.getParams();接收参数,API链接:https://developer.huawei.com/consumer/cn/doc/harmonyos-references-V5/js-apis-router-V5#ZH-CN_TOPIC_0000001884917590__routergetparams

参考demo如下:

import router from '@ohos.router';
class innerParams {array:number[]constructor(tuple:number[]) {this.array = tuple}
}class routerParams {text:stringdata:innerParamsconstructor(str:string, tuple:number[]) {this.text = strthis.data = new innerParams(tuple)}
}@Entry
@Component
struct Router1 {build() {Column(){Column(){Text("我是页面1").fontSize(50)}Column(){Button("跳转").onClick(()=>{router.pushUrl({url: 'pages/Router11',params: new routerParams('message' ,[123,456,789])})})}}.width('100%').height('100%')}
}
import router from '@ohos.router';class innerParams {array:number[]constructor(tuple:number[]) {this.array = tuple}
}class routerParams {text:stringdata:innerParamsconstructor(str:string, tuple:number[]) {this.text = strthis.data = new innerParams(tuple)}
}@Entry
@Component
struct Router11 {aboutToAppear(): void {let s:number[]=((router.getParams() as routerParams).data as innerParams).arrayconsole.log("*********:"+s);}build() {Column(){Text("123").fontSize(50)Row(){Text("33333").fontSize(50)}}.width('100%').height('100%').opacity(0.5).backgroundColor(Color.Pink)}
}
5、HarmonyOS 拖拽排序以及控件平移效果是否有工具类可以用,当前控件数据数量上限无法满足?

拖拽排序以及控件平移效果是否有工具类可以用,当前控件数据数量上限无法满足

动画效果可以参考以下demo:

@Entry
@Component
struct AnimationPage {@Provide desX: number = 0;@Provide desY: number = 0;@BuilderTabBar(index: number) {Column() {Image($r("app.media.icon")).width(38).height(38)Text(index == 1 ? "分类" : index.toString())}.onAreaChange((oldValue: Area, newValue: Area) => {if (index == 1) {console.log("onAreaChange========= newValue:" + JSON.stringify(newValue))this.desX = newValue.globalPosition.x as numberthis.desY = newValue.globalPosition.y as number}})}build() {Column() {Category()Column() {Image($r("app.media.icon")).width(38).height(38)}.onAreaChange((oldValue: Area, newValue: Area) => {console.log("onAreaChange========= newValue:" + JSON.stringify(newValue))this.desX = newValue.globalPosition.x as numberthis.desY = newValue.globalPosition.y as number})}.width("100%").height("100%")}
}@Component
struct Category {@State dataList:number[] = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20]build() {Column() {Flex({direction:FlexDirection.Row, justifyContent: FlexAlign.SpaceBetween, wrap: FlexWrap.Wrap}) {ForEach(this.dataList, (item:number) => {ListItemComponent()})}.width('100%').height('80%').backgroundColor(Color.White)}}
}@Observed
class AnimationBean {animationAppear: Boolean = false;id:number = -1;
}@Component
struct ListItemComponent {@State animationList: AnimationBean[] = []static index: number = 0;@Consume desX: number;@Consume desY: number;@Provide orgX: number = 0;@Provide orgY: number = 0;@BuilderBuildAnimationItem() {Image($r("app.media.app_icon")).width(41).height(41).id("test").onClick(() => {this.startAnimation();}).onAreaChange((oldValue:Area, newValue:Area) => {this.orgX = newValue.globalPosition.x as numberthis.orgY = newValue.globalPosition.y as numberconsole.log("onAreaChage==========" + JSON.stringify(newValue))})}startAnimation() {const animation = new AnimationBean();animation.id = ListItemComponent.index++this.animationList.push(animation)animateTo({duration: 800,curve: Curve.FastOutLinearIn,onFinish: () => {animation.animationAppear = false;this.animationList = this.animationList.filter((item: AnimationBean) => {return item.animationAppear})}}, () => {animation.animationAppear = true;})}@BuilderBuildItem() {Row() {Stack() {this.BuildAnimationItem()ForEach(this.animationList, (item: AnimationBean) => {AnimationChild({ item: item , AnimationView:this.BuildAnimationItem})}, (item: AnimationBean, index: number) => {return item.id.toLocaleString()})}}.width("20%").height(60)}build() {this.BuildItem()}
}@Component
struct AnimationChild {@ObjectLink item: AnimationBean;@Consume desX: number;@Consume desY: number;@Consume orgX: number;@Consume orgY: number;@BuilderParamAnimationView:() => void;build() {Row() {this.AnimationView()}.zIndex(5).translate(this.item.animationAppear ? { x: (this.desX - this.orgX -20), y: (this.desY - this.orgY) } : { x: 0 })}
}

相关文章:

【每日学点HarmonyOS Next知识】 状态变量、公共Page、可见区域变化回调、接收参数、拖拽排序控件

1、HarmonyOS 在定时器里面改变state修饰的变量,无法更新UI吗? 将函数function写成了封装函数的形式就可以了 Entry Component struct Index {State acSetValve: number 0;aboutToAppear(): void {setInterval(() > {this.acSetValve 200;console…...

Intent3D

1. 研究背景 在现实世界中,人们寻找 3D 物体的行为往往基于特定意图,例如“我想要一个可以支撑我背部的东西”(即寻找枕头)。传统 3D 视觉定位(3D-VG)主要依赖人工提供的参照信息(如“沙发上的…...

【Python 数据结构 10.二叉树】

目录 一、二叉树的基本概念 1.二叉树的定义 2.二叉树的特点 3.特殊的二叉树 Ⅰ、斜树 Ⅱ、满二叉树 Ⅲ、完全二叉树 Ⅳ、完全二叉树和满二叉树的区别 4.二叉树的性质 5.二叉树的顺序存储 Ⅰ、完全二叉树 Ⅱ、非完全二叉树 Ⅲ、稀疏二叉树 6.二叉树的链式存储 7.二叉树的遍历概念…...

从0开始的操作系统手搓教程27:下一步,实现我们的用户进程

目录 第一步:添加用户进程虚拟空间 准备冲向我们的特权级3(用户特权级) 讨论下我们创建用户线程的基本步骤 更加详细的分析代码 用户进程的视图 说一说BSS段 继续看process.c中的函数 添加用户线程激活 现在,我们做好了TSS…...

set、LinkedHashSet和TreeSet的区别、Map接口常见方法、Collections 工具类使用

DAY7.2 Java核心基础 想学习Collection、list、ArrayList、Set、HashSet部分的小伙伴可以转到 7.1集合框架、Collection、list、ArrayList、Set、HashSet和LinkedHashSet、判断两个对象是否相等文章查看 set集合 在set集合中,处理LinkedHashSet是有序的&#xf…...

Qt开发:nativeEvent事件的使用

文章目录 一、概述二、nativeEvent 的定义三、Windows 平台示例三、使用nativeEvent监测设备变化 一、概述 Qt 的 nativeEvent 是一个特殊的事件处理机制,允许开发者处理操作系统级别的原生事件。通常,Qt 通过 QEvent 机制来管理事件,但有时…...

鸿蒙Next-应用检测、安装以及企业内部商店的实现

一、企业内部应用检测和更新升级 A应用检测是否安装B应用 canOpenApp():boolean{ try { let link schB://com.example.test/open; // 替换成你目标应用的link串儿 let canOpen bundleManager.canOpenLink(link); console.log("canOpen:"canOpen…...

存量思维和增量思维

在网上看一篇文章,有两种典型的阅读方式。 一种,是挑刺式,眼里只有缺点。 比如,有人不厌其烦地告诉作者,哪段有错别字,哪段不够严谨。 闲得蛋疼。 有这工夫,多看会书,不香么&…...

golang将大接口传递给小接口以及场景

文章目录 golang将大接口传递给小接口背景什么是大接口传递给小接口使用场景 golang将大接口传递给小接口 背景 在 Go 语言中,接口是一种强大的工具,它允许我们定义对象的行为而不关心其具体实现。特别是在复杂的应用程序中,将一个实现了较…...

K8s 1.27.1 实战系列(七)Deployment

一、Deployment介绍 Deployment负责创建和更新应用程序的实例,使Pod拥有多副本,自愈,扩缩容等能力。创建Deployment后,Kubernetes Master 将应用程序实例调度到集群中的各个节点上。如果托管实例的节点关闭或被删除,Deployment控制器会将该实例替换为群集中另一个节点上的…...

Swift系列02-Swift 数据类型系统与内存模型

Swift 是一门现代的、安全的编程语言,其类型系统和内存模型设计对性能和安全性有着重要影响。本文将深入探讨 Swift 的数据类型系统与内存模型,帮助你更好地理解并利用这些特性来优化你的 iOS 应用。本文主要包含: 值类型和引用类型&#xf…...

MySQL中like模糊查询如何优化?

大家好,我是锋哥。今天分享关于【MySQL中like模糊查询如何优化?】面试题。希望对大家有帮助; MySQL中like模糊查询如何优化? 1000道 互联网大厂Java工程师 精选面试题-Java资源分享网 在 MySQL 中,LIKE 模糊查询虽然非常常见,…...

用低代码平台集成人工智能:无需专业开发也能实现智能化

引言:人工智能的普及与企业需求 随着人工智能(AI)技术的飞速发展,越来越多的企业开始意识到其在提升运营效率、优化客户体验和推动业务创新方面的巨大潜力。从智能客服到自动化决策支持,从数据分析到个性化推荐&#x…...

【使用hexo模板创建个人博客网站】

使用hexo模板创建个人博客网站 环境准备node安装hexo安装ssh配置 使用hexo命令搭建个人博客网站hexo命令 部署到github创建仓库修改_config.yml文件 编写博客主题扩展 环境准备 node安装 进入node官网安装node.js 使用node -v检查是否安装成功 安装成功后应该出现如上界面 …...

最简单圆形进度条实现CSS+javascript,两端带圆弧

两端是弧形的圆形进度条。 <!DOCTYPE html> <html lang"en"><head><meta charset"UTF-8" /><meta name"viewport" content"widthdevice-width, initial-scale1.0" /><title>Document</title…...

vuejs 模板语法、条件渲染、v-for、事件处理、表单输入绑定

创建vue项目之后我们就可以开始写代码了&#xff0c;我们的代码一般都会写在src目录-components目录-HelloWord.vue文件内。 我们之前写的HTML文件的结构是HTML代码可以集成或者连接外部的css/js文件。 我们通过vue建立的项目&#xff0c;它的结构是在一个vue文件内集成了HTML…...

论文阅读方法

文章目录 步骤一&#xff1a;对论文进行自我判断阅读题目和关键词。阅读摘要阅读总结要点 步骤二&#xff1a;阅读文章阅读图表和图表的注释阅读引言阅读实验部分阅读结果和作者对结果的讨论&#xff08;创新点&#xff09;要点 步骤三&#xff1a;精度论文回答问题1回答问题2回…...

问题解决:Kali Linux 中配置启用 Vim 复制粘贴功能

在 Kali Linux 系统中&#xff0c;使用 XShell 或其他类似终端时&#xff0c;Vim 编辑器的默认设置并不支持直接进行复制和粘贴操作&#xff0c;这对于日常的开发工作或渗透测试人员来说可能会造成不便。幸运的是&#xff0c;通过简单的配置调整&#xff0c;可以让 Vim 轻松支持…...

Linux hexdump命令

hexdump 是 Linux 中一个强大的二进制文件查看工具&#xff0c;可以用于查看文件的十六进制、ASCII 或其他格式的转储内容。以下是常见用法及示例&#xff1a; 1. 查看文件头部&#xff08;前 N 个字节&#xff09; 语法 hexdump -n <字节数> -C <文件名>示例&am…...

Stable Diffusion教程|快速入门SD绘画原理与安装

什么是Stable Diffusion&#xff0c;什么是炼丹师&#xff1f;根据市场研究机构预测&#xff0c;到2025年全球AI绘画市场规模将达到100亿美元&#xff0c;其中Stable Diffusion&#xff08;简称SD&#xff09;作为一种先进的图像生成技术之一&#xff0c;市场份额也在不断增长&…...

系统架构设计师—系统架构设计篇—微服务架构

文章目录 概述优势挑战 概述 微服务是一种架构风格&#xff0c;将单体应用划分成一组小的服务&#xff0c;服务之间相互协作&#xff0c;实现业务功能&#xff0c;每个服务运营在独立的进程中&#xff0c;服务间采用轻量级的通信机制协作&#xff08;通常是HTTP/JSON&#xff0…...

Array and string offset access syntax with curly braces is deprecated

警告信息 “Array and string offset access syntax with curly braces is deprecated” 是 PHP 中的一个弃用警告&#xff08;Deprecation Notice&#xff09;&#xff0c;表明在 PHP 中使用花括号 {} 来访问数组或字符串的偏移量已经被标记为过时。 背景 在 PHP 的早期版本…...

腾讯元宝:AI 时代的快速论文阅读助手

1. 背景与需求 在 AI 研究领域&#xff0c;每天都会涌现大量学术论文。如何高效阅读并提取关键信息成为研究者的一大难题。腾讯元宝是腾讯推出的一款大模型&#xff0c;结合了**大语言模型&#xff08;LLM&#xff09;和自然语言处理&#xff08;NLP&#xff09;**技术&#x…...

基于单片机的风速报警装置设计

标题:基于单片机的风速报警装置设计 内容:1.摘要 本设计聚焦于基于单片机的风速报警装置&#xff0c;旨在解决传统风速监测缺乏实时报警功能的问题。采用单片机作为核心控制单元&#xff0c;结合风速传感器采集风速数据。经实验测试&#xff0c;该装置能准确测量 0 - 60m/s 范…...

1998-2022年各地级市第一产业占GDP比重/地级市第一产业占比数据(市辖区)

1998-2022年各地级市第一产业占GDP比重/地级市第一产业占比数据&#xff08;市辖区&#xff09; 1、时间&#xff1a;1998-2022年 2、指标&#xff1a;地级市第一产业占GDP比重/地级市第一产业占比 3、来源&#xff1a;城市统计年鉴 4、范围&#xff1a;299个地级市 5、缺…...

IntersectionObserver接口介绍

IntersectionObserver API 是浏览器提供的一个用于异步观察目标元素与其祖先元素或视口&#xff08;Viewport&#xff09;交叉状态&#xff08;即是否进入或离开视口&#xff09;的接口。在 IntersectionObserver 出现之前&#xff0c;开发者通常需要通过监听 scroll 事件或使用…...

go并发学习笔记

包含了go学习笔记,含有channel的基础学习&#xff0c;编写数字的平方&#xff0c;如何成组的合并channel&#xff0c;如何优雅的关闭退出并发协程&#xff0c;通道阻塞情况分析&#xff0c;channel与哪些变成情况&#xff0c;可谓是收藏好文. 文章目录 并发1&#xff1a;chann…...

DeepSeek V3 源码:从入门到放弃!

从入门到放弃 花了几天时间&#xff0c;看懂了DeepSeek V3 源码的逻辑。源码的逻辑是不难的&#xff0c;但为什么模型结构需要这样设计&#xff0c;为什么参数需要这样设置呢&#xff1f;知其然&#xff0c;但不知其所以然。除了模型结构以外&#xff0c;模型的训练数据、训练…...

关于C++数据类型char的类型是整数的思考

学习数据类型时&#xff0c;整数类型中有一个特殊的类型char&#xff0c;可以使用字符来为其赋&#xff0c;也可以用整数来为其赋值&#xff0c;这是怎么一回事&#xff1f;其实任何类型&#xff0c;在计算机的内存中&#xff0c;在最小的存储单元比特中&#xff0c;内部只有0或…...

手写识别革命:Manus AI如何攻克多语言混合识别难题(二)

一、多语种特征分离&#xff1a;对抗训练与解耦表示 1. 梯度反转层&#xff08;GRL&#xff09;实现语言无关特征提取 class GradientReversalFn(Function):staticmethoddef forward(ctx, x, alpha):ctx.alpha alphareturn x.view_as(x)staticmethoddef backward(ctx, grad_…...