HarmonyOS NEXT仓颉开发语言实战案例:健身App
各位好,今日分享一个健身app的首页:

这个页面看起比之前的案例要稍微复杂一些,主要在于顶部部分,有重叠的背景,还有偏移的部分。重叠布局可以使用Stack容器实现,超出容器范围的偏移可以使用负数间距来实现,顶部部分的具体实现代码如下:
Column{
Text('February')
.fontColor(Color.WHITE)
.fontSize(14)
Row{
Row{
Image(@r(app.media.goal))
.width(37)
.height(37)
Text('MY GOAL')
.fontColor(Color.WHITE)
.fontSize(30)
.fontWeight(FontWeight.Bolder)
.margin(left:6)
}
Image(@r(app.media.cm_add))
.width(28)
.height(28)
}
.margin(top:20)
.width(100.percent)
.justifyContent(FlexAlign.SpaceBetween)
.alignItems(VerticalAlign.Center)
}
.alignItems(HorizontalAlign.Start)
.padding(left:12,right:12,top:60)
.width(100.percent)
.height(220)
.linearGradient( direction: GradientDirection.Bottom, colors:[(Color(103, 76, 222, alpha: 1.0),0.0),(Color(129, 28, 219, alpha: 1.0),1.0)], repeating: false)
.borderRadius(bottomLeft: 20.vp, bottomRight: 20.vp)
Row{
Column(5){
Row(6){
Text('weight')
.fontColor(Color.GRAY)
.fontSize(11)
Image(@r(app.media.cm_down))
.width(15)
.height(15)
}
.justifyContent(FlexAlign.Center)
.alignItems(VerticalAlign.Center)
.width(80)
.height(20)
.borderRadius(10)
.border(width: 1.vp, color: Color(216, 216, 216, alpha: 1.0), radius:10.vp,style: BorderStyle.Solid)
Row(8){
Image(@r(app.media.cm_js))
.width(28)
.height(28)
Column(5){
Progress(value: 50.0, total: 100.0, `type`: ProgressType.Linear)
.width(100.percent)
.color(0x9570FF)
Row{
Text('250 lb')
.fontColor(Color.GRAY)
.fontSize(10)
Text('250 lb')
.fontColor(Color.GRAY)
.fontSize(10)
}
.width(100.percent)
.alignItems(VerticalAlign.Center)
.justifyContent(FlexAlign.SpaceBetween)
}
.layoutWeight(1)
}
.width(100.percent)
}
.justifyContent(FlexAlign.Center)
.alignItems(HorizontalAlign.Start)
.padding(10)
.width(100.percent)
.height(80)
.borderRadius(10)
.backgroundColor(Color.WHITE)
}
.width(100.percent)
.height(80)
.margin(top:-50)
.padding(left:12,right:12)
剩余的部分是滚动的列表,而且有标题,所以使用List容器来实现,关于List标题的使用大家要多多熟悉:
@Builder func itemHead(text:String) {
Row{
Text(text)
.fontColor(Color.GRAY)
.fontSize(13)
}
.width(100.percent)
.height(35)
.alignItems(VerticalAlign.Center)
.padding(top:3,left:10)
}
ListItemGroup(ListItemGroupParams(header:{=>bind(this.itemHead,this)('THIS WEEK')})){
}
需要注意的是,列表的第一行是可以横向滚动的列表,我这里选择使用Scroll容器:
Scroll{
Row(12){
Stack(Alignment.Bottom){
Image(@r(app.media.cm_s1))
.width(124)
.height(155)
Column(3){
Text('WALKING LUNGES')
.fontColor(Color.WHITE)
.fontSize(13)
.fontWeight(FontWeight.Bold)
Text('Today')
.fontSize(10)
.fontColor(Color.WHITE)
.backgroundColor(0x3EC7E6)
.height(16)
.width(68)
.borderRadius(8)
.textAlign(TextAlign.Center)
}
.alignItems(HorizontalAlign.Start)
.margin(bottom:8)
}
Stack(Alignment.Bottom){
Image(@r(app.media.cm_s2))
.width(124)
.height(155)
Column(3){
Text('WALKING LUNGES')
.fontColor(Color.WHITE)
.fontSize(13)
.fontWeight(FontWeight.Bold)
Text('Today')
.fontSize(10)
.fontColor(Color.WHITE)
.backgroundColor(0x3EC7E6)
.height(16)
.width(68)
.borderRadius(8)
.textAlign(TextAlign.Center)
}
.alignItems(HorizontalAlign.Start)
.margin(bottom:8)
}
Stack(Alignment.Bottom){
Image(@r(app.media.cm_s3))
.width(124)
.height(155)
Column(3){
Text('WALKING LUNGES')
.fontColor(Color.WHITE)
.fontSize(13)
.fontWeight(FontWeight.Bold)
Text('Today')
.fontSize(10)
.fontColor(Color.WHITE)
.backgroundColor(0x3EC7E6)
.height(16)
.width(68)
.borderRadius(8)
.textAlign(TextAlign.Center)
}
.alignItems(HorizontalAlign.Start)
.margin(bottom:8)
}
}
.padding(left:12,right:12)
}
.height(155)
.width(100.percent)
最后一部分比较简单,和上面代码类似,就不再赘述了。
今天的内容就是这样,感谢阅读。##HarmonyOS语言##仓颉##休闲娱乐#
HarmonyOS NEXT仓颉开发语言实战案例:健身App的更多相关文章
- 谷歌推出全新Android开发语言Sky:让App更流畅
土豆网同步更新:http://www.tudou.com/plcover/VHNh6ZopQ4E/ 使用HTML 创建Mac OS App 视频教程. 官方QQ群: (1)App实践出真知 434 ...
- Swift语言实战晋级
Swift语言实战晋级基本信息作者: 老镇 丛书名: 爱上Swift出版社:人民邮电出版社ISBN:9787115378804上架时间:2014-12-26出版日期:2015 年1月开本:16开页码: ...
- 如何从40亿整数中找到不存在的一个 webservice Asp.Net Core 轻松学-10分钟使用EFCore连接MSSQL数据库 WPF实战案例-打印 RabbitMQ与.net core(五) topic类型 与 headers类型 的Exchange
如何从40亿整数中找到不存在的一个 前言 给定一个最多包含40亿个随机排列的32位的顺序整数的顺序文件,找出一个不在文件中的32位整数.(在文件中至少确实一个这样的数-为什么?).在具有足够内存的情况 ...
- Python开发GUI实战:图片转换素描画工具!
奋斗没有终点 好好学习72变,因为将来 没有人能替你阻挡81难 . 生如蝼蚁,当有鸿鹄之志: 命如纸薄,应有不屈之心 . 今天被这句话触动了,所以开篇分享给大家.鸡汤有毒,但有时大家却靠它激励自己 ...
- Salesforce学习之路-developer篇(五)一文读懂Aura原理及实战案例分析
1. 什么是Lightning Component框架? Lightning Component框架是一个UI框架,用于为移动和台式设备开发Web应用程序.这是一个单页面Web应用框架,用于为Ligh ...
- 盘它!基于CANN的辅助驾驶AI实战案例,轻松搞定车辆检测和车距计算!
摘要:基于昇腾AI异构计算架构CANN(Compute Architecture for Neural Networks)的简易版辅助驾驶AI应用,具备车辆检测.车距计算等基本功能,作为辅助驾驶入门级 ...
- Swift语言实战晋级-第9章 游戏实战-跑酷熊猫-1
学习目标 一.进一步学习Swift的游戏制作 二.掌握SKNode,SKSpriteNode的运用 三.了解SpriteKit的物理系统 四.掌握动作(SKAction)的运用 在这一章,我们要通过制 ...
- 用grunt搭建自动化的web前端开发环境实战教程(详细步骤)
用grunt搭建自动化的web前端开发环境实战教程(详细步骤) jQuery在使用grunt,bootstrap在使用grunt,百度UEditor在使用grunt,你没有理由不学.不用!前端自动化, ...
- C# Xamarin移动开发项目实战篇
一.课程介绍 在前面阿笨的<C# Xamarin移动开发基础进修篇>课程中,大家已经熟悉和了解了Xamarin移动App开发的基础知识和原理.本次分享课<C# Xamarin移动开发 ...
- 《数据挖掘:R语言实战》
<数据挖掘:R语言实战> 基本信息 作者: 黄文 王正林 丛书名: 大数据时代的R语言 出版社:电子工业出版社 ISBN:9787121231223 上架时间:2014-6-6 出版 ...
随机推荐
- 3D Gaussian 三维视觉重建
论文资料 论文 https://repo-sam.inria.fr/fungraph/3d-gaussian-splatting/3d_gaussian_splatting_low.pdf 资料网站 ...
- Docker 实用镜像
实用镜像 nginx-proxy nginx-proxy sets up a container running nginx and docker-gen. ...
- 《机器人SLAM导航核心技术与实战》第1季:第5章_机器人主机
<机器人SLAM导航核心技术与实战>第1季:第5章_机器人主机 视频讲解 [第1季]5.第5章_机器人主机-视频讲解 [第1季]5.1.第5章_机器人主机_X86与ARM主机对比-视频讲解 ...
- 事务注解@Transactional
目录 1.属性介绍 2.传播机制 准备例子 总结 3.原理 4.失效场景 一.属性介绍 1.isolation 属性 事务的隔离级别,默认值为 Isolation.DEFAULT.可选的值有: Iso ...
- 💻开源项目介绍-NewsNow-优雅的实时新闻聚合平台
news.zktww.vip 引言 在信息洪流中,如何优雅地获取新闻? 在当今信息爆炸的时代,我们每天需要在微博.知乎.Twitter.GitHub等平台间频繁切换,才能捕捉到最新的热点动态. New ...
- 最小生成树 & 严格次小生成树
最小生成树 何为最小生成树? 有一类问题:给定一张图,可以删除若干条边,在不改变连通性(一般是全联通)的情况下,权值和最小的方案是什么?没错,这就是最小生成树问题(MST问题).那么基本性质其实连聪明 ...
- 【笔记】PyVis|神经网络数据集的可视化
文章目录 版本: 应用实例: PyVis的应用: 零.官方教程 一.初始化画布`Network` 二.添加结点 添加单个结点`add_node`: 添加一系列结点`add_nodes`: 三.添加边 ...
- .NET 原生驾驭 AI 新基建实战系列(七):Weaviate ── 语义搜索的智能引擎创新者
引言 随着人工智能和机器学习技术的迅猛发展,向量数据在推荐系统.自然语言处理.图像搜索等领域的应用日益广泛.传统的数据库在处理高维向量数据时往往面临性能瓶颈,而向量数据库的出现为这一问题提供了高效的解 ...
- TVM: VisitExpr流程分析
TVM源码中涉及到表达式遍历的地方,一般是适用VisitExpr接口进行,这个接口设计TVM的visitor模式,具体分析可参考:TVM:visitor设计模式 基类tvm::relay::ExprF ...
- 解决github无法访问的问题,亲测有效--很强
参考:https://segmentfault.com/a/1190000037498373 ubuntu系统:在/etc/hosts文件中增加以下内容: windows系统:C:\Windows\S ...