HarmonyOS NEXT实战教程:菜谱App
随着鸿蒙系统5.0的发布,兼容的机型越来越多,对于开发者来说机会也越来越多,大家不要气馁,学习鸿蒙肯定会有用武之地,我们要做的就是做好准备。
今天跟大家分享实战教程是一个菜谱App。
ListO">首页这个页面可能会让初学者望而生畏,看起来比较复杂。但是仔细分析一下并不太难。幽蓝君再啰嗦一句,大家看到一个项目或者一个页面,不要拿过来就写,如果你不是特别熟悉,就先分析一下它大体是一个什么样的架构,分析明白再着手写代码。

这个页面首先是一个导航栏加一个列表组件List,列表中又包含了许多的样式。那我们就先把导航栏写出来:
@Builder NavigationMenu(){
Flex({direction:FlexDirection.Row,wrap:FlexWrap.NoWrap,alignItems:ItemAlign.Center}){
Search({placeholder:'想吃点什么?'})
.placeholderColor('#999999')
.fontColor("#4a4a4a")
.width('100%')
.height(35)
Stack({alignContent:Alignment.TopEnd}){
Image($r('app.media.msg'))
.width(24)
.height(24)
.objectFit(ImageFit.Auto)
.margin({left:10})
Text('3')
.width(14)
.height(14)
.backgroundColor('#FF4F4F')
.fontColor(Color.White)
.textAlign(TextAlign.Center)
.fontSize(8)
.borderRadius(7)
.borderColor(Color.White)
.borderWidth(2)
.borderStyle(BorderStyle.Solid)
.margin({left:2,top:-2})
}
}
.width('100%')
.height(40)
.padding({left:12,right:12})
}
接下来分析下内容区域,由上而下,大家可以发现主要就两种样式:轮播图和网格列表,轮播图比较简单,以最上面的轮播图为例,分享一下相关代码:

Swiper(){
Stack({alignContent:Alignment.Bottom}){
Image($r('app.media.banner_1'))
.width('100%')
.height(260)
.borderRadius(8)
Column({space:5}){
Text('麻辣鲜香·剁椒豆腐鱼')
.fontColor(Color.White)
.fontSize(18)
Row(){
Row(){
Image($r('app.media.banner_icon'))
.width(16)
.height(16)
.borderRadius(8)
Text('爱做饭的老王')
.fontColor(Color.White)
.fontSize(12)
.margin({left:3})
}
Image($r('app.media.banner_like'))
.width(20)
.height(17)
}
.width('100%')
.justifyContent(FlexAlign.SpaceBetween)
}
.alignItems(HorizontalAlign.Start)
.padding({left:12,right:12})
.margin({bottom:10})
}
.width('100%')
.height(260)
.onClick(()=>{
router.pushUrl({
url:'pages/menustep'
})
})
}
热门活动的轮播图更加简单,不再赘述了,这样我们就只剩下网格类的样式了。
网格组件Grid的用法和List类似,不过它可以使用rowsTemplate和columnsTemplate来控制元素大小来滚动方向,这一点大家可以多多实践。以分类部分为例,向大家介绍下Grid的用法:

Grid(){
ForEach(this.functionList,(item:FunctionItem,index)=>{
GridItem(){
Column(){
Image(item.cover)
.height(70)
.width(60)
Text(item.title)
.fontColor('rgb(51,51,51)')
.fontSize(12)
}
.height(150)
.alignItems(HorizontalAlign.Center)
}
})
}
.rowsTemplate('1fr 1fr')
.columnsTemplate('1fr 1fr 1fr 1fr 1fr')
.height(180)
.width('100%')
首页的部分就是这样,由小见大,其实所有页面的开发也就是这些东西,所以其他页面这里也不再赘述
HarmonyOS NEXT实战教程:菜谱App的更多相关文章
- Swift游戏开发实战教程(霸内部信息大学)
Swift游戏开发实战教程(大学霸内部资料) 试读下载地址:http://pan.baidu.com/s/1sj7DvQH 介绍:本教程是国内第一本Swift游戏开发专向资料. 本教程具体解说记忆配对 ...
- 微信小程序教学第二章:小程序中级实战教程之预备篇 - 项目结构设计 |基于最新版1.0开发者工具
iKcamp官网:http://www.ikcamp.com 访问官网更快阅读全部免费分享课程:<iKcamp出品|全网最新|微信小程序|基于最新版1.0开发者工具之初中级培训教程分享>. ...
- Android简易实战教程--第十六话《SharedPreferences保存用户名和密码》
之前在Android简易实战教程--第七话<在内存中存储用户名和密码> 那里是把用户名和密码保存到了内存中,这一篇把用户名和密码保存至SharedPreferences文件.为了引起误导, ...
- Node+Express+MongoDB + Socket.io搭建实时聊天应用实战教程(三)--前后端环境配置
前言 之前都是介绍一些基础知识,在这一节,我们就要开始实战coding了.正所谓磨刀不误砍柴工,准备工作显得尤为重要.很多demo只是追求效果的实现,并不注重整个demo的架构性.从我个人的角度看来, ...
- iView 实战系列教程(21课时)_1.iView 实战教程之配置篇
1.iView 实战教程之配置篇 点击添加插件,. 选中后安装 全部导入还是按需导入. 2.是否需要自定义主题变量 3.多语言的设置. 这里我们全部选择为默认 然后点击继续. 启动项目 入口文件导入了 ...
- 从0到1实战移动Web App开发
从0到1实战移动Web App开发 教程介绍 从0到1 实战webapp,通过热门的web前端技术实现移动端app应用,先基础.后实战,在讲解的同时引导思考,会抛出自己独特的观点,一行一行写代码讲 ...
- 分享一份软件测试项目实战(web+app+h5+小程序)
大家好,我是谭叔. 本次,谭叔再度出马,给大家找了一个非常适合练手的软件测试项目,此项目涵盖web端.app端.h5端.小程序端,可以说非常之全面. 缘起 在这之前,谭叔已经推出了九套实战教程. 但是 ...
- 【ASP.NET实战教程】ASP.NET实战教程大集合,各种项目实战集合
[ASP.NET实战教程]ASP.NET实战教程大集合,各种项目实战集合,希望大家可以好好学习教程中,有的比较老了,但是一直很经典!!!!论坛中很多小伙伴说.net没有实战教程学习,所以小编连夜搜集整 ...
- 【转】mybatis实战教程(mybatis in action),mybatis入门到精通
MyBatis 目录(?)[-] mybatis实战教程mybatis in action之一开发环境搭建 mybatis实战教程mybatis in action之二以接口的方式编程 mybatis ...
- 转发-UI基础教程 – 原生App切图的那些事儿
UI基础教程 – 原生App切图的那些事儿 转发:http://www.shejidaren.com/app-ui-cut-and-slice.html 移动APP切图是UI设计必须学会的一项技能,切 ...
随机推荐
- AI探索:通过宏脚本给小众编辑器EverEdit插上AI的翅膀!
1 AI探索:通过宏脚本给小众编辑器EverEdit插上AI的翅膀! 1.1 背景 在AI编程大行其道的背景下,各种AI编程工具:Cursor.VSCode的各种插件.Trae等等搞得不亦乐乎!您 ...
- Plotly.NET 一个为 .NET 打造的强大开源交互式图表库
前言 今天大姚给大家分享一个 .NET 强大.免费.开源的交互式图表库:Plotly.NET. 项目介绍 Plotly.NET 一个为 .NET 打造的强大.免费.开源的交互式图表库,支持 C# 和 ...
- hbase - [03] 客户端常用命令(hbase shell)
1.列出所有namespace list_namespace 2.创建namespace create_namespace 'ns_name' 3.修改namespace属性 alter_namesp ...
- ABC245Ex题解
前言 \(2024.11.21\) 联考第三题,本人由于太菜没有推出 \(m=p^x\) 的性质遂部分分跑路,作文以记之. 简要题意 对于一个长度为 \(n\),值域为 \([0,m-1]\) 的序列 ...
- @autowired注解报错原因及解决办法
@autowired 注入dao层的时候,标红报错,但不影响编译使用 按照严格的spring注解方式在dao层加入@Repository注解
- 探秘Transformer之(8)--- 位置编码
探秘Transformer之(8)--- 位置编码 0x00 概述 位置编码(Positional Embedding)是一种用于处理序列数据的技术,被用来表示输入序列中的单词位置.在Transfor ...
- Vue3路由进阶实战:深度解析参数传递与导航守卫核心技术
一.路由参数传递的进阶应用技巧 1.1 路由配置与参数验证 // router/index.js { path: '/user/:userId(\\d+)', // 使用正则表达式限制只匹配数字 na ...
- Pwnable_orw
题源 题解 保护 只开启了栈保护 分析 进入ida分析 main函数如下 seccomp (Secure Computing Mode)是一种 Linux 内核安全机制,它可以 限制进程可执行的系统调 ...
- 如何调用CMD实现多个同类文件合并的研究 · 二进制 · 依次 · 文本图像视频音频
引言 视频网站内,使用视频下载嗅探器下载了视频,打开资源管理器一看,是几千个.ts文件,见下图: 通过播放部分视频,发现其实内容是完整的,只是自动切割了多份,倘若无缝拼接为一个完整视频单元,就可以 ...
- 关于oracle pfile和spfile文件说明
•Pfile(Parameter File,参数文件):是基于文本格式的参数文件,含有数据库的配置参数. 默认的名称为"init+例程名.ora",这是一个文本文件,可以用任何文本 ...