HarmonyOS NEXT仓颉开发语言实战案例:动态广场
大家好,今日要分享的是使用仓颉语言开发动态广场页面,也比较像朋友圈页面:

整个页面分为两部分,分别是导航栏和状态列表,导航栏比较简单,我们可以先写下导航栏的具体代码和页面的基本结构:
Column{
Row(10){
Text('推荐')
.fontColor(Color.BLACK)
.fontSize(17)
.fontWeight(FontWeight.Bold)
Text('关注')
.fontColor(Color.GRAY)
.fontSize(16)
}
.width(100.percent)
.height(60)
.justifyContent(FlexAlign.Center)
List(space:10){
}
.width(100.percent)
.layoutWeight(1)
.backgroundColor(Color(247, 247, 247))
}
.width(100.percent)
.height(100.percent)
这样的话导航栏和列表容器撑满了整个页面,接下来的工作就是开发状态列表。
这里的内容也分为个人信息、状态内容和图片列表几部分,整个的布局方式是纵向的,要注意其中个人信息部分头像和名字时间是横向布局,这个比较简单。还有图片列表,我使用的方案是Grid,这样能够快速适配不同数量的图片。
话不多说,来看看代码怎么实现。对于状态列表,我们首先要定义数据结构:
public class RowItem{
private let name: String;
private let time: String;
private let cover: CJResource;
private let content: String;
private let images : ArrayList<CJResource>;
public RowItem(name:String, time:String,cover:CJResource,content:String,images:ArrayList<CJResource>){
this.name = name
this.content = content
this.time = time
this.images = images
this.cover = cover
}
public func getName():String{
return this.name
}
public func getContent():String{
return this.content
}
public func getTime():String{
return this.time
}
public func getCover():CJResource{
return this.cover
}
public func getImages():ArrayList<CJResource>{
return this.images
}
}
我们今天不涉及网络请求,直接在本地定义数组:
@State var rowList:ArrayList<RowItem> = ArrayList<RowItem>(
RowItem('Tom','7小时前',@r(app.media.icon1),'美丽的风景',ArrayList<CJResource>([@r(app.media.fj1),@r(app.media.fj2),@r(app.media.fj3)])),
RowItem('PLANK','10小时前',@r(app.media.icon2),'晨跑,空气很清新,顺便用个早餐',ArrayList<CJResource>([@r(app.media.cp1)]))
)
最后在List容器中循环遍历实现列表:
List(space:10){
ForEach(rowList, itemGeneratorFunc: {item: RowItem, index: Int64 =>
ListItem{
Column(10){
Row(6){
Image(item.getCover())
.width(40)
.height(40)
.borderRadius(20)
Column(4){
Text(item.getName())
.fontColor(Color.BLACK)
.fontSize(15)
Text(item.getTime())
.fontColor(Color.GRAY)
.fontSize(15)
}
.alignItems(HorizontalAlign.Start)
}
Text('美丽的风景')
.fontSize(18)
.fontColor(Color.BLACK)
.margin(top:3)
Grid {
ForEach(item.getImages(), itemGeneratorFunc: {img:CJResource,tag:Int64 =>
GridItem{
Image(img)
.width(112)
.height(112)
.borderRadius(8)
.onClick({e =>
imglist = item.getImages()
dialogController.open()
})
}
})
}
.width(100.percent)
.columnsTemplate('1fr 1fr 1fr')
.columnsGap(12)
.rowsGap(12)
.backgroundColor(0xFFFFFF)
}
.padding(12)
.alignItems(HorizontalAlign.Start)
.backgroundColor(Color.WHITE)
}
})
}
.width(100.percent)
.layoutWeight(1)
.backgroundColor(Color(247, 247, 247))
今天的内容就是这样,感谢阅读。##HarmonyOS语言##仓颉##休闲娱乐#
HarmonyOS NEXT仓颉开发语言实战案例:动态广场的更多相关文章
- Swift语言实战晋级-第9章 游戏实战-跑酷熊猫-3 显示一个动态的熊猫
一个静态的熊猫明显不能满足我们的欲望,接下来我们就让熊猫跑起来.序列帧动画的原理就是不停的切换不同的图片.当我们将一张一张的切换Panda类的跑动文理后,熊猫就跑起来了.那么首先我们需要一个数组常量来 ...
- Swift语言实战晋级
Swift语言实战晋级基本信息作者: 老镇 丛书名: 爱上Swift出版社:人民邮电出版社ISBN:9787115378804上架时间:2014-12-26出版日期:2015 年1月开本:16开页码: ...
- Salesforce学习之路-developer篇(五)一文读懂Aura原理及实战案例分析
1. 什么是Lightning Component框架? Lightning Component框架是一个UI框架,用于为移动和台式设备开发Web应用程序.这是一个单页面Web应用框架,用于为Ligh ...
- 如何从40亿整数中找到不存在的一个 webservice Asp.Net Core 轻松学-10分钟使用EFCore连接MSSQL数据库 WPF实战案例-打印 RabbitMQ与.net core(五) topic类型 与 headers类型 的Exchange
如何从40亿整数中找到不存在的一个 前言 给定一个最多包含40亿个随机排列的32位的顺序整数的顺序文件,找出一个不在文件中的32位整数.(在文件中至少确实一个这样的数-为什么?).在具有足够内存的情况 ...
- 软件测试人员需要精通的开发语言(1)--- VBScript
软件测试不局限于点点点的纯黑盒测试,提升自身的代码能力也是事关重要的.软件测试的发展,越来越多的公司对于测试人员的要求也日益提高,测试人员必备开发能力的优势也凸显出来.简单的介绍下部分开发语言的学习及 ...
- Python开发GUI实战:图片转换素描画工具!
奋斗没有终点 好好学习72变,因为将来 没有人能替你阻挡81难 . 生如蝼蚁,当有鸿鹄之志: 命如纸薄,应有不屈之心 . 今天被这句话触动了,所以开篇分享给大家.鸡汤有毒,但有时大家却靠它激励自己 ...
- 《Go语言实战》读书笔记
<Go语言实战>中文版pdf 百度网盘: https://pan.baidu.com/s/1kr-gMzaPAn8BFZG0P24Oiw 提取码: r6rt 书籍源码:https://gi ...
- 当红开发语言Go,真的是未来的技术主流吗?
摘要:文将详细介绍 Golang 的语言特点以及它的优缺点和适用场景,带着上述几个疑问,为读者分析 Go 语言的各个方面,以帮助初入 IT 行业的程序员以及对 Go 感兴趣的开发者进一步了解这个热门语 ...
- R 语言实战-Part 5-2笔记
R 语言实战(第二版) part 5-2 技能拓展 ----------第21章创建包-------------------------- #包是一套函数.文档和数据的合集,以一种标准的格式保存 #1 ...
- 盘它!基于CANN的辅助驾驶AI实战案例,轻松搞定车辆检测和车距计算!
摘要:基于昇腾AI异构计算架构CANN(Compute Architecture for Neural Networks)的简易版辅助驾驶AI应用,具备车辆检测.车距计算等基本功能,作为辅助驾驶入门级 ...
随机推荐
- Hack The Box-Cap靶机
该靶机通过信息收集拿到大致信息,利用IDOR访问控制缺陷漏洞获得目标流量包,通过流量分析获取到ftp流量包存在用户名密码,可以ftp登录/ssh登录拿到第一个flag,利用linpeas.sh内网收集 ...
- 使用`forEach`方法前后的代码逐步简化过程
简化前的完整循环代码 首先,我们使用传统的for-each循环遍历HashMap: import java.util.HashMap; import java.util.Map; public cla ...
- study Rust-1【Rust的特点和应用场景】
Rust语言的特点 高性能 - Rust 速度惊人且内存利用率极高.由于没有运行时和垃圾回收,它能够胜任对性能要求特别高的服务,可以在嵌入式设备上运行,还能轻松和其他语言集成. 可靠性 - Rust ...
- C#/.NET/.NET Core技术前沿周刊 | 第 33 期(2025年4.1-4.6)
前言 C#/.NET/.NET Core技术前沿周刊,你的每周技术指南针!记录.追踪C#/.NET/.NET Core领域.生态的每周最新.最实用.最有价值的技术文章.社区动态.优质项目和学习资源等. ...
- Web前端入门第 29 问:CSS 盒模型:网页布局的基石
在 Web 网页开发中,盒模型(Box Model) 是 CSS 的核心概念,它决定了每个 HTML 元素在页面中占据的空间和布局方式. 无论是文本.图片还是按钮,浏览器都会将它们视为一个矩形盒子,并 ...
- springboot集成docker实现自动化构建镜像说明
springboot集成docker实现自动化构建镜像说明 文档说明 该文档仅包括通过配置springboot.docker.jenkins.git.appollo等实现持续构建,持续发布的功能,不包 ...
- java基础之继承,抽象类
一.继承 :就是子类继承父类的非私有属性和行为 二.特点 1.子类和父类中出现了同名的成员变量时,在子类中需要访问父类中非私有成员变量时,需要使用 super 关键字 格式:super.父类成员变量名 ...
- 🎀OpenTelemetry探针介绍及使用
简介 OpenTelemetry(简称 Otel)是由 CNCF 主导的云原生可观测性标准框架,用于统一采集.处理和导出分布式系统中的遥测数据(如追踪.指标.日志).其核心目标是通过标准化协议和工具集 ...
- hadoop部署安装(六)hive
5.配置hive 5.1 hive下载地址 http://mirror.bit.edu.cn/apache/hive/ 解压缩 [root@master ~]# tar xf apache-hive- ...
- 区块链共识算法--PoW
PoW算法为一种概率算法,其共识结果是临时的,随着时间推移或某种强化,共识结果被推翻的概率越来越小,最终称为事实上结果 1 研究 工作量证明(Proof Of Work,简称POW),简单理解就是一份 ...