鸿蒙开发深入浅出04(首页数据渲染、搜索、Stack样式堆叠、Grid布局、shadow阴影)

devtools/2025/2/25 5:24:30/

鸿蒙开发深入浅出04(首页数据渲染、搜索、Stack样式堆叠、Grid布局、shadow阴影)

  • 1、效果展示
  • 2、ets/pages/Home.ets
  • 3、ets/views/Home/SearchBar.ets
  • 4、ets/views/Home/NavList.ets
  • 5、ets/views/Home/TileList.ets
  • 6、ets/views/Home/PlanList.ets
  • 7、后端代码

1、效果展示

在这里插入图片描述

2、ets/pages/Home.ets

import { getHomeDataApi } from "../api/home"
import { BasicListDataSource, IBannerItem, INavList, IPlanList, ITileList } from "../models/HomeData"
import SwiperLayout from '../views/Home/SwiperLayout'
import SearchBar from '../views/Home/SearchBar'
import NavList from "../views/Home/NavList";
import { PADDING, SHADOW_RADIUS } from "../contants/size";
import TileList from "../views/Home/TileList";
import PlanList from "../views/Home/PlanList";/*** MyHouseApplication #项目的名称* Home.ets #文件名称* Created by zhong ON 2025/2/23 #作者及添加日期*/
@Component
export default struct Home {@State bannerList: BasicListDataSource<IBannerItem> = new BasicListDataSource();@State navList: INavList = [];@State tileList: ITileList = [];@State planList: IPlanList = [];@State adPicture: string = "";// 获取首页数据的函数getHomeData = async () => {const result = await getHomeDataApi();this.bannerList.setList(result.bannerList);this.navList = result.navList;this.tileList = result.tileList;this.planList = result.planList;this.adPicture = result.adPicture}// 生命周期函数,初始化页面时触发aboutToAppear(): void {this.getHomeData();}build() {Scroll() {Stack() {Column() {SwiperLayout({ bannerList: this.bannerList });Column() {NavList({ navList: this.navList });TileList({ tileList: this.tileList })PlanList({ planList: this.planList })Image(this.adPicture).width('100%').height(60).objectFit(ImageFit.Fill).margin({ top: 10 }).shadow({offsetX: 0,offsetY: 0,radius: SHADOW_RADIUS,color: 'rgba(0, 0, 0, 0.14)'})}.padding({ left: PADDING, right: PADDING })}.width('100%')SearchBar();}.width('100%').alignContent(Alignment.TopStart);}.width('100%').height('100%').scrollBar(BarState.Off).align(Alignment.TopStart)}
}

3、ets/views/Home/SearchBar.ets

import { Size } from "@ohos/hypium"
import { PADDING, PADDING_S } from "../../contants/size"/*** MyHouseApplication #项目的名称* SearchBar.ets #文件名称* Created by zhong ON 2025/2/24 #作者及添加日期*/
@Component
export default struct SearchBar {build() {Row({ space: PADDING }) {Text('北京').fontSize(14).fontColor($r('app.color.white'))Stack() {TextInput().width('100%').height('100%').backgroundColor($r('app.color.white'))Row() {Image($r("app.media.search")).width(18).height(18)Text('公司/地铁/小区,马上搜索').fontSize(10).fontColor($r('app.color.gray')).layoutWeight(1).margin({ left: PADDING_S, right: PADDING_S })Column() {}.width(1).height(18).backgroundColor($r('app.color.line')).margin({ right: PADDING })Image($r("app.media.position")).width(18).height(18)}.padding({ left: PADDING, right: PADDING })}.width(244)Image($r('app.media.message')).width(24).height(24)}.width('100%').height(38).padding({ left: PADDING, right: PADDING }).margin({ top: 4 })}
}

4、ets/views/Home/NavList.ets

import { INavItem, INavList } from "../../models/HomeData";/*** MyHouseApplication #项目的名称* NavList.ets #文件名称* Created by zhong ON 2025/2/24 #作者及添加日期*/
@Component
export default struct NavList {@Prop navList: INavList;build() {Grid() {ForEach(this.navList, (item: INavItem) => {GridItem() {Column({ space: 8 }) {Image(item.imageURL).width(58).height(56).objectFit(ImageFit.Fill)Text(item.title).fontSize(12).fontColor($r('app.color.black'))}}}, (nav: INavItem) => nav.id + '')}.width('100%').height(170).margin({ top: 24 }).rowsGap(14).columnsGap(32).rowsTemplate('1fr 1fr').columnsTemplate('1fr 1fr 1fr 1fr')}
}

5、ets/views/Home/TileList.ets

import { ITileItem, ITileList } from "../../models/HomeData"/*** MyHouseApplication #项目的名称* TileList.ets #文件名称* Created by zhong ON 2025/2/24 #作者及添加日期*/
@Component
export default struct TileList {@Prop tileList: ITileList;build() {Row({ space: 64 }) {ForEach(this.tileList, (tile: ITileItem) => {Column() {Image(tile.imageURL).width("100%").height(58).objectFit(ImageFit.Fill)Row({ space: 5 }) {Text(tile.title).fontSize(12).fontColor($r('app.color.black'))Text(tile.sub_title).fontSize(10).fontColor($r('app.color.gray'))}.height(22).width("100%")}.width(148)}, (tile: ITileItem) => tile.id + '')}.width('100%').height('79').margin({ top: 12 })}
}

6、ets/views/Home/PlanList.ets

import { IPlanItem, IPlanList } from "../../models/HomeData"/*** MyHouseApplication #项目的名称* PlanList.ets #文件名称* Created by zhong ON 2025/2/24 #作者及添加日期*/
@Component
export default struct PlanList {@Prop planList: IPlanList;build() {Row({ space: 15 }) {ForEach(this.planList, (plan: IPlanItem) => {Image(plan.imageURL).width(78).height(60).objectFit(ImageFit.Fill)}, (plan: IPlanItem) => plan.id + "")}.width('100%').margin({ top: 18 })}
}

7、后端代码

双击 zufangBackend-windows-amd64.exe 运行

在这里插入图片描述


http://www.ppmy.cn/devtools/161498.html

相关文章

PCF8591一次读取多条通道导致测量值不准确的原因及解决方法

使用PCF8591测量通道电压的时候&#xff0c;只测量一个通道电压是正常的&#xff0c;但是要测量两个通道的电压时&#xff0c;会异常显示。 产生原因 时序精度不够 PCF8591通过选择不同的通道进行模拟信号采样。每次转换前&#xff0c;通道的选择需要一定的时间&#xff0c;…

便携式动平衡仪Qt应用层详细设计说明书

便携式动平衡仪Qt应用层详细设计说明书 (DDD) 版本&#xff1a;1.1 日期&#xff1a;2023年10月 一、文档目录 系统概述应用层架构设计模块详细设计接口定义与数据流关键数据结构代码框架与实现测试计划附录 二、系统概述 2.1 功能需求 开机流程&#xff1a;长按电源键启动…

DeepSeek写俄罗斯方块手机小游戏

DeepSeek写俄罗斯方块手机小游戏 提问 根据提的要求&#xff0c;让DeepSeek整理的需求&#xff0c;进行提问&#xff0c;内容如下&#xff1a; 请生成一个包含以下功能的可运行移动端俄罗斯方块H5文件&#xff1a; 核心功能要求 原生JavaScript实现&#xff0c;适配手机屏幕 …

第六次作业

一.对比 LVS 负载均衡群集的 NAT 模式和 DR 模式&#xff0c;比较其各自的优势 。 LVS-NAT模式的优势 配置简单&#xff1a;NAT模式的配置相对容易&#xff0c;无需复杂的网络设置&#xff0c;适合初学者和小型网络环境。 网络架构灵活&#xff1a;由于使用了NAT技术&#xf…

Deepseek快速做PPT

背景&#xff1a; DeepSeek大纲生成 → Kimi结构化排版 → 数据审查&#xff0c;细节调整 DeepSeek 拥有深度思考能力&#xff0c;擅长逻辑构建与内容生成&#xff0c;它会根据我们的问题进行思考&#xff0c;其深度思考能力当前测试下来&#xff0c;不愧为国内No.1&#xff0…

【JavaEE进阶】数据库连接池

目录 &#x1f334;数据库连接池 &#x1f38b;数据库连接池的使用 &#x1f332;MySQL企业开发规范 &#x1f334;数据库连接池 数据库连接池负责分配、管理和释放数据库连接&#xff0c;它允许应⽤程序重复使⽤⼀个现有的数据库连接&#xff0c;⽽不是再重新建⽴⼀个. 没…

1.1 go环境搭建及基本使用

golang下载地址&#xff1a; Download and install - The Go Programming Language (google.cn) 验证安装是否成功&#xff1a; go version 查看go环境 go env 注意&#xff1a;Go1.11版本之后无需手动配置环境变量,使用go mod 管理项目&#xff0c;也不需要把项目放到GO…

Baklib智能平台:数据驱动下的企业知识安全与协作

内容概要 在数字化转型加速渗透的今天&#xff0c;企业知识资产的智能化管理与安全防护已成为核心竞争力构建的关键环节。Baklib作为新一代知识中台&#xff08;Knowledge Hub&#xff09;的典型代表&#xff0c;以数据驱动技术为核心引擎&#xff0c;重构了企业知识管理的底层…