HarmonyOS自学-Day5(使用List、Stack、RelativeContainer相关组件实现的小案例)

目录

  • 文章声明⭐⭐⭐
  • 让我们开始今天的学习吧!
    • 小案例


文章声明⭐⭐⭐

  1. 该文章为我(有编程语言基础,非编程小白)的 HarmonyOS自学笔记,此类文章笔记我会默认大家都学过前端相关的知识,并常常以实现相关小案例的形式记录自己的学习过程
  2. 知识来源为 HarmonyOS官方文档/B站UP主筱筱知晓的HarmonyOS教学视频,归纳为自己的语言与理解记录于此
  3. 不出意外的话,我大抵会 持续更新
  4. 想要了解前端开发(技术栈大致有:Vue2/3、微信小程序、uniapp、HarmonyOS、NodeJS、Typescript)与Python的小伙伴,可以关注我!谢谢大家!

让我们开始今天的学习吧!

小案例

代码如下:

@Entry
@Component
struct Hello {
  // 推荐列表
  @State hotSearchList: string[] = ['女装', '鞋子', '军大衣', '花棉袄', 'Flutter教程', 'HarmonyOS', 'ArkTS', '高跟鞋', '电脑', '华为手机']
  // 控制按钮显示的布尔值
  @State isShow: boolean = false

  build() {
    // 堆叠布局
    Stack({ alignContent: Alignment.BottomEnd }) {
      // 标题与滑动列表
      Column() {
        // 标题
        Text('精品推荐')
          .width('100%')
          .height(60)
          .fontSize(40)
          .textAlign(TextAlign.Center)
        // 滑动列表
        List() {
          ForEach(this.hotSearchList, item => {
            ListItem() {
              Text(`${item}`) {
              }
              .width('100%')
              .height(60)
              .fontSize(25)
              .textAlign(TextAlign.Center)
              .backgroundColor('#eee')
              .margin({ top: 20 })
              .borderRadius(10)
            }
          }, (item, index) => item + `${index}`)
        }
        .layoutWeight(1)
      }
      .width('100%')
      .height('100%')
      // 相对定位容器
      RelativeContainer() {
        // 主按钮
        Button() {
          Text('A')
            .fontSize(26)
            .textAlign(TextAlign.Center)
            .fontColor(Color.White)
        }
        .id('mainButton')
        .width(60)
        .height(60)
        .backgroundColor('#4db8de')
        .alignRules({
          bottom: {
            anchor: '__container__',
            align: VerticalAlign.Bottom
          },
          right: {
            anchor: '__container__',
            align: HorizontalAlign.End
          }
        })
        .onClick(() => {
          // 控制是否显示多个副按钮
          this.isShow = !this.isShow
        })
        // 动态控制显示多个副按钮
        if (this.isShow) {
          Button() {
            Text('B')
              .fontSize(26)
              .textAlign(TextAlign.Center)
              .fontColor(Color.White)
          }
          .id('ButtonB')
          .width(60)
          .height(60)
          .backgroundColor(Color.Orange)
          .alignRules({
            bottom: {
              anchor: 'mainButton',
              align: VerticalAlign.Top
            },
            right: {
              anchor: '__container__',
              align: HorizontalAlign.End
            }
          })
          .offset({
            y: -25
          })

          Button() {
            Text('C')
              .fontSize(26)
              .textAlign(TextAlign.Center)
              .fontColor(Color.White)
          }
          .id('ButtonC')
          .width(60)
          .height(60)
          .backgroundColor(Color.Red)
          .alignRules({
            bottom: {
              anchor: 'mainButton',
              align: VerticalAlign.Top
            },
            right: {
              anchor: 'mainButton',
              align: HorizontalAlign.Start
            }
          })

          Button() {
            Text('D')
              .fontSize(26)
              .textAlign(TextAlign.Center)
              .fontColor(Color.White)
          }
          .id('ButtonD')
          .width(60)
          .height(60)
          .backgroundColor(Color.Green)
          .alignRules({
            bottom: {
              anchor: '__container__',
              align: VerticalAlign.Bottom
            },
            left: {
              anchor: '__container__',
              align: HorizontalAlign.Start
            }
          })
          .offset({
            x: 5
          })
        }
      }
      .width(150)
      .height(150)
    }
    .width('100%')
    .height('100%')
    .padding(15)
  }
}

效果展示:
效果展示


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

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

相关文章

软考系分之计算机网络IP地址的表示(IPv4及IPv6)

文章目录 1、概要2、IPv4地址点分十进制和分类表示2.1 IPv4分类表示2.2 IPv4不分类表示2.3 IPv4特殊IP和子网划分 3、IPv6地址4、总结 1、概要 本篇介绍计算机网络中的IP地址,在网络工程师的考试中,IP地址是必考内容,但是在系统分析师的考察中…

Spring5.0 — WebClient(响应式web客户端)

一、介绍 1.1、RestTemplate 同步阻塞代码,http 请求返回响应才继续执行。 1.2、WebClient 1.基于 Reactor 和 Netty。 2.响应式 web 客户端。异步执行不阻塞代码,少量的线程数处理高并发的 Http 请求。 3.集成 Spring WebFlux 框架,可与…

【C语言基础考研向】05 scanf读取标准输入超详解

文章目录 一.scanf函数的原理 样例问题原因解决方法 二.多种数据类型混合输入 错误样例正确样例 一.scanf函数的原理 C语言未提供输入/输出关键字,其输入和输出是通过标准函数库来实现的。C语言通过scanf函数读取键盘输入,键盘输入又被称为标准输入。…

JavaScript 类型判断及类型转换规则

文章目录 JavaScript 类型及其判断使用 typeof 判断类型使用 instanceof 判断类型使用 constructor 和 Object.prototype.toString 判断类型JavaScript 类型及其转换JavaScript 函数参数传递cannot read property of undefined 问题解决方案分析一道网红题目JavaScript 类型判断…

thinkphp 可执行文件think

think 是一个可执行文件,位置:网站根目录 内容:1 定义项目路径 2 加载cll框架文件 shell脚本里第一行的:#!/usr/bin/env php 什么意思 这句#!的含义就是,按照环境变量PATH寻找第一个php程序来执行。 #!/usr/bin/php…

大语言模型系列-ELMo

文章目录 前言一、ELMo的网络结构和流程二、ELMo的创新点总结 前言 在前文大语言模型系列-word2vec已经提到word2vec的缺点: 为每个词汇表中每个分词静态生成一个对应的词向量表示,没有考虑到语境,因此无法无法处理多义词 ps:先…

【Spring Boot 3】【Redis】分布式锁

【Spring Boot 3】【Redis】分布式锁 背景介绍开发环境开发步骤及源码工程目录结构总结 背景 软件开发是一门实践性科学,对大多数人来说,学习一种新技术不是一开始就去深究其原理,而是先从做出一个可工作的DEMO入手。但在我个人学习和工作经…

【文档数据库】ES和MongoDB的对比

目录 1.由文档存储牵出的问题 2.什么是MongoDB? 3.ES和MongoDB的对比 1.由文档存储牵出的问题 本文或者说关于mongodb的这个系列文章的源头: 前面我们聊过了分布式链路追踪系统,在基于日志实现的分布式链路追踪的方式seluthzipkin中为了…

VsCode 常见的配置

转载:Visual Studio Code 常见的配置、常用好用插件以及【vsCode 开发相应项目推荐安装的插件】 - 知乎 (zhihu.com) 一、VsCode 常见的配置 1、取消更新 把插件的更新也一起取消了 2、设置编码为utf-8:默认就是了,不用设置了 3、设置常用的…

beego的控制器Controller篇 — 错误处理

1 错误处理 在做 Web 开发的时候,经常需要页面跳转和错误处理,beego 这方面也进行了考虑,通过 Redirect 方法来进行跳转: func (this *AddController) Get() {this.Redirect("/", 302) } 如何中止此次请求并抛出异常…

TDengine 企业级功能:存储引擎对多表低频场景优化工作分享

在去年 8 月份发布的 3.1.0.0 版本中,TDengine 进行了一系列重要的企业级功能更新,其中包括对多表低频场景写入性能的大幅优化。这一优化工作为有此需求的用户提供了更大的便捷性和易用性。在本文中,TDengine 的资深研发将对此次优化工作进行…

C语言--带哨兵位的双向循环链表的创建及使用详解

C语言--带哨兵位的双向循环链表的创建及使用详解 1. 双向循环链表定义1.1 定义1.2 优点:1.3 物理结构 2. 双向链表的创建2.1 文件创建2.2 节点创建 3. 链表操作3.1 初始化3.2 显示3.3 尾插3.4 头插3.5 尾删3.6 头删3.7 查找3.8 指定位置前插入3.9 指定位置删除3.10 …

【Qt之模型视图】2. 模型类及QModelIndex模型索引、自定义模型

1. 模型类 在模型/视图体系结构中,模型提供了一个标准接口,视图和委托使用该接口访问数据。在Qt中,标准接口是由QAbstractItemModel类定义的。无论数据项如何存储在任何底层数据结构中,QAbstractItemModel的所有子类都会以层次结…

GPT APP的开发步骤

开发一个GPT(Generative Pre-trained Transformer) Store(存储)涉及到使用预训练的语言模型(例如GPT-3)来生成和管理内容。以下是一般的步骤,希望对大家有所帮助。北京木奇移动技术有限公司&…

云计算入门——Linux 命令行入门

云计算入门——Linux 命令行入门 前些天发现了一个人工智能学习网站,通俗易懂,风趣幽默,最重要的屌图甚多,忍不住分享一下给大家。点击跳转到网站。 介绍 如今,我们许多人都熟悉计算机(台式机和笔记本电…

vscode 中配置 python 虚拟环境

vscode 中配置 python 虚拟环境 Start 在编写代码的过程中,我们经常会用到一些第三方依赖,帮助我们快速完成功能。在 Python 中,默认情况都是统一安装在全局环境中,但是这样伴随着电脑项目越来越多,不同项目对依赖的…

XTuner 大模型单卡低成本微调实战

1 概述 1.1 XTuner 一个大语言模型微调工具箱。由 MMRazor 和 MMDeploy 联合开发。 1.2 支持的开源LLM (2023.11.01) InternLM ✅Llama,Llama2ChatGLM2,ChatGLM3QwenBaichuan,Baichuan2…Zephyr 1.3 特色 🤓 傻瓜化&#xf…

pytest学习和使用-pytest如何进行分布式测试?(pytest-xdist)

1 什么是分布式测试? 在进行本文之前,先了解些基础知识,什么是分布式测试?分布式测试:是指通过局域网和Internet,把分布于不同地点、独立完成特定功能的测试计算机连接起来,以达到测试资源共享…

Ubuntu系统环境搭建(十三)——使用docker-compose安装redis

ubuntu环境搭建专栏🔗点击跳转 Ubuntu系统环境搭建(十三)——使用docker-compose安装redis 文章目录 Ubuntu系统环境搭建(十三)——使用docker-compose安装redis1.搭建文件夹2.docker-compose.yaml配置文件3.redis.co…

银河麒麟操作系统 v10 中离线安装 Docker

银河麒麟操作系统 v10 中离线安装 Docker 1. 查看系统版本2. 查看 Linux 内核版本(3.10以上)3. 查看 iptabls 版本(1.4以上)4. 判断处理器架构5. 离线下载 Docker 安装包6. 移动解压出来的二进制文件到 /usr/bin 目录中7. 配置 Do…