HarmonyOS(44) Polyline模拟股票分时走势图

Polyline

  • 前言
  • Polyline
  • 初始化坐标集合
  • 开启定时器
  • 全部源码
  • 参考资料

前言

本篇博文使用折线组件Polyline来绘制股票实施走势图,通过本篇博客,你可以了解到@State、定时器、Polyline的作用。同时可以加深对自定义组件的生命周期的理解。

Polyline

模拟股票的分时图功能实现思路如下

  • 每段折线都有一对起始坐标点(X1,Y1)——>(X2,Y2)。连续的折线图就需要n个坐标点构成(X1,Y1)——>(X2,Y2)…——>(Xn,Yn).
  • 每个坐标点都是一个Array数组:Array<number> = [X,Y]
  • 连续的坐标点则是数组里面包含若干个数组坐标点:Array<Array<number>> =[ [X1,Y1], [X2,Y2],[X3,Y3],......,[Xn,Yn]]效果如下图:
  • Polyline的points方法就是用来接收折线经过坐标点列表Array<Array<number>>
    在这里插入图片描述_
    结合以上思路,我们就可以使用定时器,每秒往坐标点集合里新增一个坐标点即可。

初始化坐标集合

我们使用@State标签初始化坐标点集合,当集合发生变化时,就会重绘页面。

 //初始化坐标点集合@State positions: Array<Array<number>> = [[0, 0], [5, 10], [6, 20]];

开启定时器

根据组件的生命周期(见下图),我们可以在aboutToAppear里面开启一个定时器,在aboutToDisapper里面销毁定时器。
在这里插入图片描述
通过setInterval方法开启计时器,该方法会返回一个Id,通过该Id可以关闭定时器。每个一秒就获取坐标集合里前一个坐标点的X坐标,然后以该坐标为基准根据随机数生成一个新的X坐标,再生成一个新的随机Y坐标即可。代码如下:

  private intervalId = -1aboutToAppear(): void {this.intervalId = setInterval(() => {//前一个坐标点的X坐标let lastPositionX = this.positions[this.positions.length-1][0];//新的坐标点(newX,newY)let newX: number = lastPositionX + Math.random() * 15let newY: number = Math.random() * 200;let newPosition: Array<number> = [newX,newY];//追加新坐标点,刷新页面this.positions.push(newPosition)}, 1000);}//关闭计时器aboutToDisappear(): void {clearInterval(this.intervalId)}

具体效果见如下视频:

PolyLine实现股票分时图

全部源码

@Entry
@Component
struct Index {//初始化坐标@State positions: Array<Array<number>> = [[0, 0], [5, 10], [6, 20]];private intervalId = -1aboutToAppear(): void {this.intervalId = setInterval(() => {//前一个坐标点的X坐标let lastPositionX = this.positions[this.positions.length-1][0];//新的坐标点(newX,newY)let newX: number = lastPositionX + Math.random() * 15let newY: number = Math.random() * 200;let newPosition: Array<number> = [newX,newY];this.positions.push(newPosition)}, 1000);}build() {Row() {Polyline().points(this.positions).stroke(Color.Red).strokeWidth(1).borderStyle(BorderStyle.Dashed).antiAlias(true).fillOpacity(0).height("50%").width("100%")}.justifyContent(FlexAlign.Center).height("100%").width("100%")}aboutToDisappear(): void {clearInterval(this.intervalId)}
}

参考资料

Timer定时器
Polyline API
@State组件
@entry和@Component的生命周期

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

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

相关文章

Android11 SplashScreen 的显示和退出流程

应用的启动到显示到屏幕是需要一定的时间的&#xff0c;为了提升用户的体验&#xff0c;google加入了启动窗口&#xff0c;也就是SplashScreen SplashScreen显示流程 在应用的启动过程中&#xff0c;会调用到ActivityStarter的startActivityInner方法&#xff0c;具体可参考&a…

2024 China Joy 前瞻 | 腾讯网易发新作,网易数智携游戏前沿科技、创新产品以及独家礼盒,精彩不断!

今年上半年&#xff0c;CES、MWC和AWE三大国际科技展轮番轰炸&#xff0c;吸引全球科技爱好者的高度关注&#xff0c;无论是新潮的科技产品&#xff0c;还是对人工智能的探索&#xff0c;每一项展出的技术和产品都引起了市场的热议。而到了下半年&#xff0c;一年一度的China J…

AGE 在CTE表达式中使用Cypher

在使用CTE&#xff08;公共表达式&#xff09;时&#xff0c;没有对使用Cypher的限制。 查询&#xff1a; WITH graph_query as (SELECT *FROM cypher(graph_name, $$MATCH (n)RETURN n.name, n.age$$) as (name agtype, age agtype) ) SELECT * FROM graph_query;结果&#…

【Linux】进程7——查看进程

1.为什么进程管理这么重要呢&#xff1f; 这是因为&#xff1a; 首先&#xff0c;我们在操作系统时的各项任务其实都是经过某个PID来完成的&#xff08;包括你的bash环境&#xff09;&#xff0c;因此&#xff0c;能不能执行某项任务&#xff0c;就与该进程的权限有关了。再来…

centos切换python默认版本的最简单步骤(随手记)

centos8默认安装的python版本是python3.6&#xff0c;当需要更高版本的python3.9或3.11时&#xff0c;我们经常搜索到源码安装然后编写软连接。 [rootmanager Python-3.9.0]# python3 --version Python 3.6.8 [rootmanager Python-3.9.0]# pip3 --version pip 9.0.3 from /usr…

RAG理论:ES混合搜索BM25+kNN(cosine)以及归一化

接前一篇:RAG实践:ES混合搜索BM25+kNN(cosine) https://blog.csdn.net/Xin_101/article/details/140230948 本文主要讲解混合搜索相关理论以及计算推导过程, 包括BM25、kNN以及ES中使用混合搜索分数计算过程。 详细讲解: (1)ES中如何通过BM25计算关键词搜索分数; (2)…

SpringBoot注解--11--@JSONField @JsonProperty

提示&#xff1a;文章写完后&#xff0c;目录可以自动生成&#xff0c;如何生成可参考右边的帮助文档 文章目录 一个问题&#xff1a;后端实体类isXXX开头的属性&#xff0c;传到前端后自动去掉is解决方法&#xff1a; JsonProperty和JSONField1.简介2.注解的区别2.1 底层框架不…

容联云发布容犀大模型应用,重塑企业“营销服”|WAIC 2024

7月6日&#xff0c;在2024世界人工智能大会上&#xff0c;容联云成功举办主题为“数智聚合 产业向上”的生成式应用与大模型商业化实践论坛。 论坛上&#xff0c;容联云发布了容犀智能大模型应用升级&#xff0c;该系列应用包括容犀Agent Copilot、容犀Knowledge Copilot、容犀…

python库(12):Requests库实现HTTP请求

1 Requests库 Requests是一个极为流行的HTTP库&#xff0c;它允许你发送各种类型的HTTP请求。无论是GET、POST、PUT、DELETE还是其他类型的请求&#xff0c;Requests都能轻松搞定。 虽然还有其他HTTP库&#xff0c;但Requests库以其简洁的API和人性化的设计脱颖而出。它隐藏了…

寻找赛灵思IP核手册的办法

一、先google找到大家看的手册都是什么样的 二、在AMD技术手册网站搜索手册的名称 网址&#xff1a;AMD Technical Information Portal

科普文:spring boot中常用的接口、工具栏、注解整理

1.springboot 常用接口 1.1 Aware接口 Spring IOC容器中 Bean是感知不到容器的存在&#xff0c;Aware(意识到的)接口就是帮助Bean感知到IOC容器的存在&#xff0c;即获取当前Bean对应的Spring的一些组件&#xff0c;如当前Bean对应的ApplicationContext等。 1.1.1 Applicati…

python如何进行pip换源

hello&#xff0c;大家好&#xff0c;我是一名测试开发工程师&#xff0c;至今已在自动化测试领域深耕9个年头&#xff0c;现已将本人实战多年的多终端自动化测试框架【wyTest】开源啦&#xff0c;请大家快来体验并关注我吧。 Python的包管理工具pip是开发者必备的利器之一。然…

企业公司网站建站自适应网站源码系统 前后端分离 带完整的源代码包以及搭建部署教程

系统概述 在数字化转型的浪潮中&#xff0c;企业网站已成为展示品牌形象、吸引潜在客户、促进业务交流的重要窗口。为了满足企业对于高效、灵活、易维护网站建设的迫切需求&#xff0c;小编给大家分享一款集先进技术与人性化设计于一体的“企业公司网站建站自适应网站源码系统…

Windows 如何安装和卸载 OneDrive?具体方法总结

卸载 OneDrive 有人想问 OneDrive 可以卸载吗&#xff1f;如果你不使用当然可以卸载&#xff0c;下面是安装和卸载 OneDrive 中的卸载应用具体操作步骤&#xff1a; 卸载 OneDrive 我们可以从设置面板中的应用选项进行卸载&#xff0c;打开设置面板之后选择应用&#xff0c;然…

vue3+springboot+mybatis+mysql项目实践--简单登录注册功能实现

这里是一次对vue3springbootmybatismysql的项目实现&#xff0c;简单实现前后端分离的登录注册功能&#xff0c;主要工具&#xff1a;idea,navicat 目录 一、创建vue3项目并初始配置 创建vue3项目 2.修改项目结构 1&#xff09;原始目录结构 2&#xff09;修改后目录结构 …

RFID技术简介

1.RFID&#xff08;无线射频设别技术&#xff09;介绍 &#xff08;1&#xff09;RFID是一种通信技术&#xff0c;通过无线电讯号耦合识别特点目标并读写相关数据。 &#xff08;2&#xff09;类型 &#xff08;3&#xff09;应用 智慧仓库&#xff0c;AGV&#xff0c;ETC …

自动驾驶中,实现三维点旋转原理

文章目录 1. 三维点旋转的方案2. 使用复数表示二维点的旋转2.1. 复数的概念2.2. 复数的三种形式及相互转换2.3. 复数概念扩展&#xff1a;实数、虚数、复数 3. 四元数旋转三维点原理4. 使用四元数进行旋转的公式5. 旋转叠加6. 四元数转换为三维点7. 代码实现 1. 三维点旋转的方…

一文学会用RKE部署高可用Kubernetes集群

k8s架构图 RKE简介 RKE全称Rancher Kubernetes Engine&#xff0c;是一个快速的&#xff0c;多功能的 Kubernetes 安装工具。通过RKE&#xff0c;我们可以快速的安装一个高可用K8S集群。RKE 支持多种操作系统&#xff0c;包括 MacOS、Linux 和 Windows。 K8S原生安装需要的先…

【YOLOv5/v7改进系列】改进池化层为SimSPPF

一、导言 SimSPPF&#xff08;Simplified Spatial Pyramid Pooling with Fixed-size kernel&#xff09;模块是在YOLOv6架构中引入的一个关键组件&#xff0c;它旨在优化原始SPPF&#xff08;Spatial Pyramid Pooling Fixed-size&#xff09;模块的效率。以下是SimSPPF的一些优…

开发TEE的踩坑之开发TEE

系统&#xff1a;Ubuntu20.04&#xff08;双系统&#xff0c;非虚拟机&#xff09; 一、前置说明1、TEE平台的选择2、机器间的通信方式3、程序和数据集的示例4、结果文件的解密 二、服务器部署三、客户端部署四、工程应用 本系列为笔者开发TEE&#xff08;Trusted Execution En…