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

embedded/2025/2/28 2:17:23/

鸿蒙开发深入浅出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/embedded/167693.html

相关文章

2024 年出现的 11 大数据收集趋势

数据收集趋势的出现是对技术进步、企业需求和市场波动的回应&#xff0c;我们对 2025 年的预测涵盖了所有方面。物联网和人工智能等前沿技术将改变组织收集和处理数据的方式&#xff0c;法规将促使它们更加细致地对待数据&#xff0c;而消费者对增强现实和虚拟现实的兴趣将为数…

在职考研可行性探索

一、考研基本门槛与条件 1. 报名资格 学历要求:国家承认的本科毕业生(含应届、往届),你的南邮本科完全符合条件。 年龄限制:绝大多数专业无年龄限制(部分特殊专业如军校除外)。 工作年限:仅对管理类专硕(如MBA/MPA)要求本科毕业后3年以上工作经验,与你报考计算机/软…

js获取后端Long类型返回json时number类型精度丢失

JS的数字类型目前支持的最大值为&#xff1a;&#xff08;2的53次方&#xff0c;即 9007199254740992&#xff09;&#xff0c;一旦数字超过这个值&#xff0c;JS将会丢失精度&#xff0c;导致前后端的值出现不一致。 后端java是Long类型&#xff0c;其精度比number高&#xf…

基于Python异常信息丰富度约束下CNN压缩系统设计与实现

项目地址&#xff1a;基于Python异常信息丰富度约束下CNN压缩系统设计与实现 摘 要 结构化网络剪枝的过程主要包括两种:逐层迭代剪枝和端到端迭代剪枝。而其中端到端迭代方案在获取第一个剪枝网络结构时&#xff0c;网络各层过滤器被剪枝的个数是随机的&#xff0c;破坏了原始…

C++核心指导原则: 并发和并行

C Core Guidelines 整理目录 哲学部分接口(Interface)部分函数部分类和类层次结构部分枚举部分资源管理部分表达式和语句部分性能部分并发和并行错误处理 一般规则 CP.1: Assume that your code will run as part of a multi-threaded program 解释: 假设你的代码将会作为多…

[算法--前缀和] 矩阵区域和

目录 1. 二维前缀和的知识铺垫2. 以nums[i][j]为中心计算区域大小.3. dp数组与ret数组之间的逻辑关系.4. 细节: 如果[i,j]为中心的数组越界了呢?下面继续分享一道用前缀和思想解决的算法问题 -> 矩阵区域和 1. 二维前缀和的知识铺垫 实际上, 有一道十分类似的基础题 ->…

HTML篇

1. src和href的区别 &#xff08;1&#xff09;src src 是 source 的缩写&#xff0c;指向外部资源的位置&#xff0c;指向的内容将会嵌入到文档中当前标签所在位置&#xff1b;在请求 src 资源时会将其指向的资源下载并应用到文档内&#xff0c;例如 js 脚本&#xff0c;img …

使用 Containerd 通过 HTTP 协议拉取 Harbor 私有镜像仓库的镜像

在 Kubernetes 1.24及以上版本环境中&#xff0c;docker不再被支持&#xff0c;主要使用Containerd 是常用的容器运行。默认情况下&#xff0c;Containerd 使用 HTTPS 协议与镜像仓库通信。然而&#xff0c;在某些场景下&#xff08;如测试环境或内部网络&#xff09;&#xff…