鸿蒙开发深入浅出04(首页数据渲染、搜索、Stack样式堆叠、Grid布局、shadow阴影)
鸿蒙开发深入浅出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 运行

相关文章:
鸿蒙开发深入浅出04(首页数据渲染、搜索、Stack样式堆叠、Grid布局、shadow阴影)
鸿蒙开发深入浅出04(首页数据渲染、搜索、Stack样式堆叠、Grid布局、shadow阴影) 1、效果展示2、ets/pages/Home.ets3、ets/views/Home/SearchBar.ets4、ets/views/Home/NavList.ets5、ets/views/Home/TileList.ets6、ets/views/Home/PlanList.ets7、后端…...
管道文件(1)
1.无名管道:在同一主机下,具有亲缘关系的进程间的通信,如父子进程间的通信。 2.有名管道:在同一主机下的任意进程间的通信。 (1)管道的创建 (2)管道的打开(openÿ…...
什么是AI agent技术,有哪些著名案例
AI Agent技术是一种基于人工智能的智能实体,能够感知环境、进行决策和执行动作,以实现特定目标。近年来,随着大模型(如GPT-4)和生成式AI技术的发展,AI Agent在多个领域得到了广泛应用,并取得了显…...
Cursor结合Claude 3.7零基础开发愤怒的小鸟【深夜Claude 3.7系列发布,类似DeepSeek-R1和V3的合体?】
文章目录 前言介绍“市面上唯一的混合模型”卓越的编程能力、精准控制思考时间Cursor已接入Cursor结合Claude 3.7快速编写游戏完整html代码 🍃作者介绍:双非本科大四网络工程专业在读,阿里云专家博主,前三年专注于Java领域学习&am…...
基于 Python 的天气数据分析与可视化
基于 Python 的天气数据分析与可视化 1. 项目背景 天气数据分析与可视化项目旨在通过爬取天气数据并进行分析,生成可视化图表,帮助用户了解天气变化趋势。通过该项目,学生可以掌握 Python 的数据爬取、数据分析和可视化技能。该项目适用于气…...
Bybit事件技术分析
事件概述 2025年2月21日UTC时间下午02:16:11,Bybit的以太坊冷钱包(0x1db92e2eebc8e0c075a02bea49a2935bcd2dfcf4)因恶意合约升级遭到资金盗取。根据Bybit CEO Ben Zhou的声明,攻击者通过钓鱼攻击诱骗冷钱包签名者错误签署恶意交易…...
JavaWeb-在idea中配置Servlet项目
文章目录 在idea中进行Servlet项目的配置(较新的idea版本)创建一个空的JavaSE项目(Project)创建一个普通的JavaSE板块(module)添加Web项目的配置定义一个对象模拟实现接口在web.xml中配置路径映射配置项目到Tomcat服务器启动Tomcat服务器进行测试 在idea中进行Servlet项目的配置…...
redis小记
redis小记 下载redis sudo apt-get install redis-server redis基本命令 ubuntu16下的redis没有protected-mode属性,就算sudo启动,也不能往/var/spool/cron/crontabs写计划任务,感觉很安全 #连接到redis redis-cli -h 127.0.0.1 -p 6379 …...
垂类大模型微调(一):认识LLaMA-Factory
LlamaFactory 是一个专注于 高效微调大型语言模型(LLMs) 的开源工具框架,尤其以支持 LLaMA(Meta 的大型语言模型系列)及其衍生模型(如 Chinese-LLaMA、Alpaca 等)而闻名。它的目标是简化模型微调流程,降低用户使用门槛; 官方文档 一、介绍 高效微调支持 支持多种微调…...
企业为什么要选择软件测试外包公司?湖南软件测试公司有哪些?
在当今快速发展的技术背景下,软件测试已成为软件开发生命周期的重要一环。随着企业对软件质量要求的不断提高,软件测试外包公司逐渐被越来越多的企业所青睐。 软件测试外包公司通过将软件测试从内部团队外包出去,帮助企业减少开发成本、提升…...
数据保护API(DPAPI)深度剖析与安全实践
Windows DPAPI 安全机制解析 在当今数据泄露与网络攻击日益频繁的背景下,Windows 提供的 DPAPI(Data Protection API)成为开发者保护本地敏感数据的重要工具。本文将从 双层密钥体系、加密流程、跨上下文加密、已知攻击向量与防御措施、企业…...
java23种设计模式-桥接模式
桥接模式(Bridge Pattern)学习笔记 🌟 定义 桥接模式属于结构型设计模式,将抽象部分与实现部分分离,使它们可以独立变化。通过组合代替继承的方式,解决多维度的扩展问题,防止类爆炸。 &#x…...
3D Web轻量化引擎HOOPS Communicator如何赋能航空航天制造?
在当今航空航天制造领域,精确度、效率和协作是推动行业发展的关键要素。随着数字化技术的飞速发展,3D Web可视化开发包HOOPS Communicator 为航空航天制造带来了革命性的变化。它凭借强大的功能和灵活的应用,助力企业在设计、生产、培训等各个…...
iOS手机App爬虫- (1) Mac安装Appium真机运行环境
iOS手机App爬虫 一、环境准备与工具安装1. 开发基础环境配置1.1 Node.js环境1.2 Xcode套件1.3 Java环境 2. 核心测试工具链2.1 Appium主程序2.2 辅助工具集 3. 可视化工具 二、设备与环境验证1. 设备信息获取2. 环境健康检查 三、WebDriverAgent编译部署1. 设备端准备2. 项目配…...
android s下make otapackage编译失败
[DESCRIPTION] android s上,我司推荐使用split build的方式进行编译,但是部分客户依旧会采用AOSP full build的方式进行编译。而我司在这块release的时候,并未进行验证。因此执行make otapackage的时候,会出现如下报错。 [0312/…...
《Elasticsearch实战:从零开始构建高效全文搜索引擎》
内容概览: Elasticsearch简介 Elasticsearch的定义与应用场景 Elasticsearch的核心特性 环境搭建与安装 安装Elasticsearch 启动与配置Elasticsearch 索引设计与映射 创建索引 定义映射(Mapping) 字段类型与分析器的选择 数据导入与管理…...
【Linux网络】认识协议(TCP/UDP)、Mac/IP地址和端口号、网络字节序、socket套接字
⭐️个人主页:小羊 ⭐️所属专栏:Linux 很荣幸您能阅读我的文章,诚请评论指点,欢迎欢迎 ~ 目录 1、初识协议2、UDP、TCP3、Mac、IP地址4、端口号5、网络字节序6、socket 1、初识协议 协议就是一种约定。如何让不同厂商生产的计…...
12、数据库、Sql单表多表
文章目录 一、数据库简介二、单表三、多表四、等值连接五、内联结六、inner join on、left join on、right join on区别七、模糊查找八、作业 一、数据库简介 数据在内存: 优点:读写速度快缺点:程序结束后数据丢失 保存到文件 优点&#…...
Spring Boot 实现图片上传并生成缩略图功能
在实际开发中,上传图片并生成缩略图是一项常见需求,例如在电商平台、社交应用等场景中,缩略图可以有效提高页面加载速度,优化用户体验。本文将介绍如何在 Spring Boot 项目中实现上传图片并生成缩略图的功能。 📦 1. …...
洛谷B3664[语言月赛202209] 零食售卖点
B3664 [语言月赛202209] 零食售卖点 - 洛谷 代码区: #include<bits/stdc.h>using namespace std;int main(){int n;cin >> n;int arry[n],dp[n];for(int i0;i<n;i){cin >> arry[i];}dp[0]0;sort(arry,arryn);for(int i1;i<n;i){dp[i]arry…...
Network Slimming实战:从稀疏正则化到结构化剪枝的完整指南
1. Network Slimming:让AI模型瘦身的艺术 第一次听说模型剪枝时,我脑海中浮现的是园艺师修剪树枝的画面。没想到这个比喻意外地准确——就像剪掉多余的树枝能让植物更健康,剪除神经网络中冗余的参数同样能让模型更高效。Network Slimming就是…...
Phi-4-mini-reasoning数据库优化实践:基于MySQL查询语句的智能分析与索引建议
Phi-4-mini-reasoning数据库优化实践:基于MySQL查询语句的智能分析与索引建议 1. 引言:当数据库遇上AI助手 最近在帮一个电商平台做数据库优化时,遇到了一个典型问题:随着订单量突破百万级,他们的报表查询从秒级响应…...
终极指南:如何用SuperPoint彻底解决视觉特征提取难题
终极指南:如何用SuperPoint彻底解决视觉特征提取难题 【免费下载链接】SuperPoint Efficient neural feature detector and descriptor 项目地址: https://gitcode.com/gh_mirrors/su/SuperPoint 你在处理图像匹配、SLAM或三维重建时,是否经常遇到…...
vivo X300 Ultra长焦套件集市游玩体验佳,小巧轻便成家庭出游必备!
vivo X300 Ultra长焦套件体验:集市游玩拍出惊喜,小巧轻便再游必备!原本我以为 vivo X300 系列只是个博眼球、难促销售的噱头概念。然而,带着这部手机和精心设计、造型奇特的小镜头套件度过一个周末后,我玩得十分尽兴。…...
LSTM实战:遗忘门、输入门与输出门解决长期依赖
LSTM实战:遗忘门、输入门与输出门解决长期依赖 本文是上篇《Word2Vec与CBOW算法实战》的续篇。上篇解决了"如何用词向量表示词语"的问题,但还有一个关键问题没解决:如何让模型理解前后词语之间的关联关系? 这就是 RNN 到…...
如何在3分钟内免费获得Apex Legends终极压枪助手
如何在3分钟内免费获得Apex Legends终极压枪助手 【免费下载链接】Apex-NoRecoil-2021 Scripts to reduce recoil for Apex Legends. (auto weapon detection, support multiple resolutions) 项目地址: https://gitcode.com/gh_mirrors/ap/Apex-NoRecoil-2021 还在为Ap…...
基于STM32Cube MX的CAN总线高效配置实战:从HAL库初始化到多节点通信调试
1. CAN总线与STM32Cube MX基础认知 第一次接触CAN总线时,我也被它复杂的协议栈吓到过。但实际在工业控制领域,CAN总线就像老司机们心照不宣的暗号——用两根线就能搞定多设备通信。我的第一个CAN项目是给智能农业大棚做环境监控,当时用STM32F…...
【限时解密】头部AI编码平台未公开的长代码分治协议:动态切片+跨段约束注入+状态感知回溯(附可运行PoC)
第一章:智能代码生成在长代码中的挑战 2026奇点智能技术大会(https://ml-summit.org) 当智能代码生成模型面对超过千行的模块化系统(如微服务入口层、编译器前端或分布式事务协调器)时,其输出质量常出现显著衰减。这种衰减并非源…...
手把手教你配置UNIS CD2000国产台式机:从开机BIOS到统信UOS系统安装全流程
国产化设备实战指南:UNIS CD2000与统信UOS深度配置手册 当国产化设备从政策导向走向实际应用,如何快速上手配置成为许多技术人员的迫切需求。UNIS CD2000作为国产台式机的代表型号,搭配统信UOS操作系统,正在党政军办公、金融、教育…...
OV5640摄像头模组研究
OV5640是一款由OmniVision(豪威科技)公司生产的高性能500万像素CMOS图像传感器,凭借其卓越的成像质量、灵活的接口配置和丰富的功能特性,已成为嵌入式视觉系统、智能监控设备和机器人技术等领域的热门选择。作为一款1/4英寸光学格式的传感器,OV5640支持多种分辨率(最高25…...
