鸿蒙项目云捐助第二讲鸿蒙图文互动基本程序实现
鸿蒙项目云捐助第二讲鸿蒙图文互动基本程序实现
结合第一讲建立的“Hello World”程序,得到如下图所示的界面。
这里的“Hello World”是通过“Priview”显示出来的。在这个界面中进行开发的前奏曲,可以通过点击更换图片的案例来体会一下鸿蒙Next的开发使用方法。
###这里我们直接修改鸿蒙Next项目目录下entry入口模块中main主文件夹下ets/pages目录下的index.ets的文件。如下图所示的文件。
在这个文件中修改图片随按钮的点击而变化需要了解一些基本的布局方法,需要记住一些关键的指令标签。
一、鸿蒙Next开发布局中基础记忆的布局标签
这里完成鸿蒙Next基本的开发布局需要记忆的一些布局组件名称,如下所示:
Row 表示行,在容器中的元素做为行内元素显示
Column 表示列,在容器中的元素做为块状元素显示
Text 表示文字,在Text中可以设置显示的文本
Image 表示图像,在Image中可以设置图片的资源文件
Button 表示按钮,在Button中可以设置按钮的文字
这里还可以设置组件名称的属性,有两个所有组件都具备的属性是非常重要的。如下所示
width 设置组件的宽
height 设置组件的高
二、完成鸿蒙Next的图片文字按钮的基本逻辑
在前面介绍了鸿蒙页面中常见的图片,文字及按钮的组件标签名,这里通过文字和按钮实现一个简单的鸿蒙页面,代码如下图。
在上述代码中,Text中的this.message显示的就是代码最开始设置的@State指定的信息“Hello World”,在Text的外面有一个Column()的列式块状组件,使Column()元素包含的Text文字和Button按钮以竖向的形式显示。在Text的文本组件下面的.fontSize表示字号的属性方法,接下来的.fontWeight表示粗体的属性方法,继续下来的.alignRule指定了一个规则,表示文字的居中方式,这种居中方式由VerticalAlign.Center指定的。有了Text元素的相关属性方法指定后,后面跟上的是一个按钮Button,按钮设定了基本的宽width和高height属性,同时设定一个方法onClick,这个onClick就是按钮点击后的动作,这个按钮点击事发生的动作可以改变之前@State定义的message变量名。把onClick中的功能进行限定为点击按钮改变文字,实现的功能代码如下图所示。
这里对比两次代码上的不同,在onClick方法中改变message变量的值,可以使用this方法指定一个新值,新的变量值就会覆盖原变量的值。这里的变量定义使用了@State来定义的。功能上实现了把原来的“Hello World”改成了“你好,世界!”,这里可以在预览中看到,原来显示的是“Hello World”,后面点击按钮后,界面上的文字变成了“你好,世界!”。
这里把程序做一个修改,把文字下面增加一个图片,首先找到两张不同的图片,这两张图片可以从百度图库中搜索到相关的“风景”,如下图所示。
从百度图库找到图片后,注意需要把图片放在鸿蒙Next项目中的media文件夹中,具体位置如下图所示。
通过图示得知,两张不同的风景图片需要存放在鸿蒙Next项目目录下entry入口模块中main主文件夹下resource目录下的media目录下,这里产生了两张图片,一个是背景图片background.png, 一个是前景图片foreground.png,下面需要修改功能的需求是点击按钮后,不但要更换文字,还需要更换图片,在鸿蒙页面布局中还需要引入一张图片,在原有index.ets文件的Column列式块状元素中添加一个Image的组件,代码如下图。
这里又在Column的列式块状元素中又加入了Image的组件,这个组件位于Button的按钮组件之上,并使用$r限定使用的资源名称,为了简化资源的使用名称,这里把background.png改成a.png,把另个一个图片foreground.png改成b.png。在Image使用时后面括号中通过$r引入资源文件,app.media就指向了图片的资源目录,app.media.a就指向图片资源目录中的a.png图片中,后面的.width定义图片的宽,使用双引号带80%限定图片占屏幕的80%,如果直接指定数字就是图片具体的宽,如后面的.height就是直接指定一个200的值,即图片的高是200px的像素值。现在就可以在“Preview”中显示一个图片,但我们的目的不是只显示一个图片,是显示一个图片后还可以更换图片,根据之前改变文字的思想,是需要一个体@State去定义一个文字变量,然后onClick点击时改变这个文字变量的内容。说到这里,照葫芦画个瓢,我们使用@State定 义一个图片资源的变量,通过onClick点击后改变这个图片资源变量的内容。代码如下图所示。
从图中可以看到,这里照着文字的逻辑,先使用@State定义一个图片的变量,这个变量必须是Resource表示资源,这个资源通过$r(“app.media.a”)指向了图片资源目录中的a.png图片中,在Image元素的具体调用中使用这个pic的变量进行显示,需要在pic的前面指示为this表示@State指定的变量。
继续根据文字改变的逻辑思路,当按钮发生onClick点击事件后,发生了资源变量的图片资源指向的改变,代码如下图。
这里也通过this指定pic的变量发生改变,然后在“Preview”预览窗口中点击按钮后即可以改变文字,也可以改变图片,如下图所示。
这样,通过调整和修改后的index.ets中的全代码如下图所示。
这里,鸿蒙Next页面文字、图片、按钮的简单动作就开启了云捐助项目的序幕,后面持续完成首页、捐助页等相关的功能页面,请持续关注。
相关文章:

鸿蒙项目云捐助第二讲鸿蒙图文互动基本程序实现
鸿蒙项目云捐助第二讲鸿蒙图文互动基本程序实现 结合第一讲建立的“Hello World”程序,得到如下图所示的界面。 这里的“Hello World”是通过“Priview”显示出来的。在这个界面中进行开发的前奏曲,可以通过点击更换图片的案例来体会一下鸿蒙Next的开发…...

求解球面的一组正交标架
目录 求解球面的一组正交标架 求解球面的一组正交标架 球面 r ( u , v ) ( a cos u cos v , a cos u sin v , a sin u ) \mathbf{r}(u,v)\left(a\cos u\cos v,a\cos u\sin v,a\sin u\right) r(u,v)(acosucosv,acosusinv,asinu), 求得 r u ( − a sin u c…...

php.ini 文件上传/执行时间/部分配置新手教程
1、上传文件大小配置 一般需要同时配置“upload_max_filesize”、“post_max_size”,配置格式如下: file_uploads On ;是否允许HTTP文件上传 upload_max_filesize 2M ;设置单个文件上传的最大尺寸 post_max_size 8M ;设置 POST 请求体的最大尺寸&am…...

【Leetcode Top 100】102. 二叉树的层序遍历
问题背景 给你二叉树的根节点 r o o t root root,返回其节点值的 层序遍历 。 (即逐层地,从左到右访问所有节点)。 数据约束 树中节点数目在范围 [ 0 , 2000 ] [0, 2000] [0,2000] 内 − 1000 ≤ N o d e . v a l ≤ 1000 -1…...

【C++笔记】AVL树
前言 各位读者朋友们大家好,上期我们讲解了map和set这两大容器的使用,这一期我们讲解最早的平衡二叉搜索树——AVL树。 目录 前言一. AVL树的概念二. AVL树的实现2.1 AVL树的结构2.2 AVL树的插入2.2.1 AVL树插入一个值的大致过程2.2.2 平衡因子的更新2…...

【竞技宝】LOL:JDG官宣yagao离队
北京时间2024年12月13日,在英雄联盟S14全球总决赛结束之后,各大赛区都已经进入了休赛期,目前休赛期也快进入尾声,LPL大部分队伍都开始陆续官宣转会期的动向,其中JDG就在近期正式官宣中单选手yagao离队,而后者大概率将直接选择退役。 近日,JDG战队在官方微博上连续发布阵容变动消…...

双目摄像头标定方法
打开matlab 找到这个标定 将双目左右目拍的图像上传(左右目最好不少于20张) 等待即可 此时已经完成标定,左下角为反投影误差,右边为外参可视化 把这些误差大的删除即可。 点击导出 此时回到主页面,即可看到成功导出 Ca…...

相差不超过k的最多数,最长公共子序列(一),排序子序列,体操队形,青蛙过河
相差不超过k的最多数 链接:相差不超过k的最多数 来源:牛客网 题目描述: 给定一个数组,选择一些数,要求选择的数中任意两数差的绝对值不超过 𝑘 。问最多能选择多少个数? 输入描述: 第一行输入两个正整…...

【自然语言处理与大模型】使用llama.cpp将HF格式大模型转换为GGUF格式
llama.cpp的主要目标是在本地和云端的各种硬件上以最小的设置和最先进的性能实现LLM推理。是一个专为大型语言模型(LLM)设计的高性能推理框架,完全使用C和C编写,没有外部依赖,这使得它可以很容易地被移植到不同的操作系…...

MongoDB存储照片和文件存储照片的区别在那里?
一、维度对比 比较维度MongoDB存储照片文件系统存储照片数据模型使用文档存储数据,可以存储不同结构的照片。以文件的形式存储照片,每个文件独立存在。性能高效的数据检索,适用于大规模应用程序中的高效检索和访问。但在处理大量高分辨率图片…...

协变量的概念
协变量的概念 协变量的概念 协变量(Covariate)是在统计分析和研究中,与因变量(被研究的主要变量)相关,并且可能对因变量产生影响的其他变量。它不是研究的主要关注对象,但需要在分析过程中被考虑进去,因为它可能会混淆或改变自变量与因变量之间的关系。举例说明 教育研…...

【[LeetCode每日一题】Leetcode 1768.交替合并字符串
Leetcode 1768.交替合并字符串 题目描述: 给定两个字符串 word1 和 word2,以交替的方式将它们合并成一个新的字符串。即,第一个字符来自 word1,第二个字符来自 word2,第三个字符来自 word1,依此类推。如果…...

SRT协议学习
SRT(Secure Reliable Transport)协议是一种开源的视频传输协议,旨在提供安全,可靠,低延迟的视频流传输。以下是SRT协议的一些关键的工作原理。 1 安全传输,SRT通过使用AES加密和数据完整性验证来确保数据的安全传输。它可以在不信…...

南昌大学《2024年837自动控制原理真题》 (完整版)
本文内容,全部选自自动化考研联盟的:《南昌大学873自控考研资料》的真题篇。后续会持续更新更多学校,更多年份的真题,记得关注哦~ 目录 2024年真题 Part1:2024年完整版真题 2024年真题...

ASP.NET Core 应用程序的启动与配置:Program.cs 文件的全面解析
ASP.NET Core 应用程序的启动与配置:Program.cs 文件的全面解析 Program.cs 是 ASP.NET Core 应用程序的入口点,负责应用程序的启动和配置。以下是 Program.cs 文件中完成的主要工作,按逻辑步骤进行总结: 1. 创建和配置主机环境…...

2020-12-02 数字过滤
缘由 C语言 数组:数字过滤-CSDN问答 void chuli(int n15236) {int aa[47]{0},j0,m0;while(n)aa[j]n%10,n/10;while(j)if(aa[--j]%2)m*10,maa[j];cout << m << ends; } void 数字过滤(int n 15236) {int aa[47]{0}, j 0, m 0;while (…...

长短期记忆神经网络(LSTM)介绍
1、应用现状 长短期记忆神经网络(LSTM)是一种特殊的循环神经网络(RNN)。原始的RNN在训练中,随着训练时间的加长以及网络层数的增多,很容易出现梯度爆炸或者梯度消失的问题,导致无法处理较长序列数据,从而无…...

数据结构 ——二叉树转广义表
数据结构 ——二叉树转广义表 1、树转广义表 如下一棵树,转换为广义表 root(c(a()(b()()))(e(d()())(f()(j(h()())())))) (根(左子树)(右子树)) 代码实现 #include<stdio.h> #include<stdlib.h>//保存…...

chattts生成的音频与字幕修改完善,每段字幕对应不同颜色的视频,准备下一步插入视频。
上一节中,实现了先生成一个固定背景的与音频长度一致的视频,然后插入字幕。再合并成一个视频的方法。 但是:这样有点单了,所以: 1.根据字幕的长度先生成视频片断 2.在片段上加上字幕。 3.合并所有片断,…...

数据结构开始——时间复杂度和空间复杂度知识点笔记总结
好了,经过了漫长的时间学习c语言语法知识,现在我们到了数据结构的学习。 首先,我们得思考一下 什么是数据结构? 数据结构(Data Structure)是计算机存储、组织数据的方式,指相互之间存在一种或多种特定关系的数据元素…...

路由策略与策略路由
路由策略 常用有Router-Policy,Filter-Policy等 控制路由是否可达,通过修改路由条目相关参数影响流量的转发 基于控制平面,会影响路由表表项,但只能基于目地址进行策略判定,于路由协议相结合使用 Router-Policy …...

pytorch_fid 安装笔记
目录 torch安装: pytorch_fid安装 torch安装: pip install torch2.5.0 --index-url https://download.pytorch.org/whl/cu121 pytorch_fid安装 pip install pytorch_fid 安装后,torch也会自动安装,导致torch引用报错。...

Qt绘制仪表————附带详细说明和代码示例
文章目录 1 效果2 原理3 编码实践3.1 创建仪表属性类3.2 设置类属性3.3 绘制图案3.3.1 设置反走样3.3.2 绘制背景3.3.3 重新定义坐标原点3.3.4 绘制圆环3.3.5 绘制刻度线3.3.6 绘制刻度线上的描述值3.3.7 绘制指针3.3.8 绘制指针数值和单位3.3.9 控制指针变化 扩展福利参考 1 效…...

百度地图JavaScript API核心功能指引
百度地图JavaScript API是一套由JavaScript语言编写的应用程序接口,它能够帮助您在网站中构建功能丰富、交互性强的地图应用,包含了构建地图基本功能的各种接口,提供了诸如本地搜索、路线规划等数据服务。百度地图JavaScript API支持HTTP和HT…...

mp4影像和m4a音频无损合成视频方法
第一步:复制高清视频地址 url 第二步:打开网址粘贴复制的视频url视频下载 第三步:下载-影像.mp4和-音频.m4a 第四步:合并视频; 使用ffmpeg进行无损合成(如果没有安装ffmpeg请自行下载安装下载 FFmpeg (p2hp.com)&…...

Ubuntu下将Julia嵌入Jupyter内核
一.安装 Julia 如果 Julia 尚未安装: 打开终端,下载最新的 Julia 安装包: wget https://julialang-s3.julialang.org/bin/linux/x64/1.9/julia-1.9.3-linux-x86_64.tar.gz 解压并移动到 /opt: tar -xvzf julia-1.9.3-linux-x86_…...

openGauss开源数据库实战二十五
文章目录 任务二十五 openGauss 数据库的物理备份与恢复任务目标实施步骤一、为进行物理备份做准备1.确保数据库工作在归档模式2.创建保存数据库物理备份的目录3.创建保存归档日志备份的目录 二、进行openGauss数据库的物理备份1.备份数据库2.切换WAL3.备份归档日志 三、openGa…...

[C/C++] List相关操作
List相关操作 1 链表二分 目标: (1)对于偶数节点,正好对半分; (2)对于奇数节点,前 后 1 (3)断开链表,方便后期合并 // 使用快慢指针完成中点…...

继电器控制与C++编程:实现安全开关控制的技术分享
在现代生活中,继电器作为一种重要的电气控制元件,在电气设备的安全控制中起到了至关重要的作用。通过低电流控制高电流,继电器能够有效地隔离控制电路与被控设备,从而保障使用者的安全。本项目将介绍如何通过树莓派Pico与继电器模块结合,使用C++编程实现继电器的控制。 一…...

题解 - 找子序列(2024.12上海月赛丙组T4)
题目描述 Dave 有一个长度为 n 的非负整数序列 a1-n, 和一个非负整数 m 。 他希望知道是否有一个 a 的非空子序列,使得子序列中所有元素的按位与(bitwise AND)结果为 m。 换言之,他想知道是否存在一个下标序列 i1-k(k ≥ 1),满足 1 ≤ i1 < i2 < …...