OpenHarmony开辟实战:常用组件与结构(ArkTS,2024年最新HarmonyOS鸿蒙高 ...

打印 上一主题 下一主题

主题 844|帖子 844|积分 2532

export default class PageResource {
title: Resource;
img?: Resource;
others?: Resource;
constructor(title: Resource, img?: Resource, others?: Resource) {
this.title = title;
this.img = img;
this.others = others;
}
}
// MainViewModel.ets
import ItemData from ‘./temData’;
export class MainViewModel {

getFirstGridData(): Array {
let firstGridData: ItemData[] = [
new ItemData($r(‘app.string.my_love’),                                    r                                   (                            ′                                  a                         p                         p                         .                         m                         e                         d                         i                         a                         .                         l                         o                         v                                   e                            ′                                  )                         )                         ,                         n                         e                         w                         I                         t                         e                         m                         D                         a                         t                         a                         (                              r('app.media.love')), new ItemData(                  r(′app.media.love′)),newItemData(r(‘app.string.history_record’), $r(‘app.media.record’)),

];
return firstGridData;
}

}
export default new MainViewModel();
实现页面框架

从前面介绍章节的表示图可以看出,本示例由两个tab页构成,利用Tabs组件来实现,提取tabBar的公共样式,同时设置TabContent和Tabs的backgroundColor来实现底部tabBar栏背景色突出的结果。
// MainPage.ets
Tabs({
barPosition: BarPosition.End,
controller: this.tabsController
}) {
TabContent() {

}

.backgroundColor($r(‘app.color.mainPage_backgroundColor’)) // “首页”的页面背景色
.tabBar(this.TabBuilder(CommonConstants.HOME_TITLE, CommonConstants.HOME_TAB_INDEX,
$r(‘app.media.home_selected’), $r(‘app.media.home_normal’)))

}

.backgroundColor(Color.White) // 底部tabBar栏背景色

.onChange((index: number) => {
this.currentIndex = index;
})

实现“首页”内容

“首页”结果如下所示:

从上面结果如可以看出“首页”由三部分内容构成分别是轮播图、2*4栅格图、4*4栅格图。首先利用Swiper组件实现轮播图,无需设置图片巨细。
// Home.ets
Swiper(this.swiperController) {
ForEach(mainViewModel.getSwiperImages(), (img: Resource) => {
Image(img).borderRadius($r(‘app.float.home_swiper_borderRadius’))
}, (img: Resource) => JSON.stringify(img.id))
}

.autoPlay(true)

然后利用Grid组件实现2*4栅格图,代码如下
// Home.ets
Grid() {
ForEach(mainViewModel.getFirstGridData(), (item: ItemData) => {
GridItem() {
Column() {
Image(item.img)
.width(                                   r                                   (                            ′                                  a                         p                         p                         .                         f                         l                         o                         a                         t                         .                         h                         o                         m                                   e                            h                                  o                         m                         e                         C                         e                         l                                   l                            s                                  i                         z                                   e                            ′                                  )                         )                         .                         h                         e                         i                         g                         h                         t                         (                              r('app.float.home_homeCell_size')) .height(                  r(′app.float.homeh​omeCells​ize′)).height(r(‘app.float.home_homeCell_size’))
Text(item.title)
.fontSize($r(‘app.float.little_text_size’))
.margin({ top: $r(‘app.float.home_homeCell_margin’) })
}
}
}, (item: ItemData) => JSON.stringify(item))
}
.columnsTemplate(‘1fr 1fr 1fr 1fr’)
.rowsTemplate(‘1fr 1fr’)

利用Grid组件实现4*4栅格列表栏,此中单个栅格中有一张背景图片和两行字体不同的文本,因此在Column组件中放置两个Text组件,并设置背景图,留意Grid组件必须设置高度,否则可能出现页面空白。
// Home.ets
Grid() {
ForEach(mainViewModel.getSecondGridData(), (secondItem: ItemData) => {
GridItem() {
Column() {
Text(secondItem.title)

Text(secondItem.others)

}
.alignItems(HorizontalAlign.Start)
}

.backgroundImage(secondItem.img)
.backgroundImageSize(ImageSize.Cover)

}, (secondItem: ItemData) => JSON.stringify(secondItem))
}

.height($r(‘app.float.home_secondGrid_height’))
.columnsTemplate(‘1fr 1fr’)
.rowsTemplate(‘1fr 1fr’)

实现“我的”页内容

“我的”页面结果图如下:

利用List组件结合ForEach语句来实现页面列表内容,此中引用了settingCell子组件,列表间的灰色分割线可以利用Divider属性实现,代码实现如下:
// Setting.ets
List() {
ForEach(mainViewModel.getSettingListData(), (item: ItemData) => {
ListItem() {
this.settingCell(item)
}
.height($r(‘app.float.setting_list_height’))
}, (item: ItemData) => JSON.stringify(item))
}

.divider({ // 设置分隔线

})

@Builder settingCell(item: ItemData) {
Row() {
Row({ space: CommonConstants.COMMON_SPACE }) {
Image(item.img)

Text(item.title)

}
if (item.others === null) {
Image($r(“app.media.right_grey”))

} else {
Toggle({ type: ToggleType.Switch, isOn: false })
}
}
.justifyContent(FlexAlign.SpaceBetween) // 相邻元素之间距离雷同

}
最后

有许多小伙伴不知道学习哪些鸿蒙开辟技术?不知道需要重点掌握哪些鸿蒙应用开辟知识点?而且学习时频繁踩坑,终极浪费大量时间。所以有一份实用的鸿蒙(HarmonyOS NEXT)资料用来跟着学习是非常有须要的。
这份鸿蒙(HarmonyOS NEXT)资料包罗了鸿蒙开辟必掌握的核心知识要点,内容包罗了(**ArkTS、ArkUI开辟组件、Stage模型、多端部署、分布式应用开辟、音频、视频、WebGL、OpenHarmony****多媒体技术、Napi组件、OpenHarmony内核、Harmony南向开辟、鸿蒙项目实战等等)鸿蒙(HarmonyOS NEXT)**技术知识点。
希望这一份鸿蒙学习资料能够给各人带来帮助,有需要的小伙伴自行领取,限时开源,先到先得~无套路领取!!
假如你是一名有经验的资深Android移动开辟、Java开辟、前端开辟、对鸿蒙感兴趣以及转行职员,可以直接领取这份资料
获取这份完整版高清学习路线,请点击→纯血版全套鸿蒙HarmonyOS学习资料****
鸿蒙(HarmonyOS NEXT)最新学习路线




  • HarmonOS基础技能



  • HarmonOS就业必备技能 

  • HarmonOS多媒体技术



  • 鸿蒙NaPi组件进阶



  • HarmonOS高级技能



  • 初识HarmonOS内核

  • 实战就业级装备开辟

有了路线图,怎么能没有学习资料呢,小编也准备了一份团结鸿蒙官方发布笔记整理收纳的一套系统性的鸿蒙(OpenHarmony )学习手册(共计1236页)鸿蒙(OpenHarmony )开辟入门教学视频,内容包罗:ArkTS、ArkUI、Web开辟、应用模型、资源分类…等知识点。
获取以上完整版高清学习路线,请点击→纯血版全套鸿蒙HarmonyOS学习资料
《鸿蒙 (OpenHarmony)开辟入门教学视频》


《鸿蒙生态应用开辟V2.0白皮书》


《鸿蒙 (OpenHarmony)开辟基础到实战手册》

OpenHarmony北向、南向开辟情况搭建

《鸿蒙开辟基础》



  • ArkTS语言
  • 安装DevEco Studio
  • 运用你的第一个ArkTS应用
  • ArkUI声明式UI开辟
  • .……

《鸿蒙开辟进阶》



  • Stage模型入门
  • 网络管理
  • 数据管理
  • 电话服务
  • 分布式应用开辟
  • 通知与窗口管理
  • 多媒体技术
  • 安全技能
  • 任务管理
  • WebGL
  • 国际化开辟
  • 应用测试
  • DFX面向未来计划
  • 鸿蒙系统移植和裁剪定制
  • ……

自我介绍一下,小编13年上海交大毕业,曾经在小公司待过,也去过华为、OPPO等大厂,18年进入阿里一直到现在。
深知大多数HarmonyOS鸿蒙开辟工程师,想要提升技能,每每是本身摸索成长或者是报班学习,但对于培训机构动则几千的学费,着实压力不小。本身不成体系的自学结果低效又漫长,而且极易碰到天花板技术停滞不前!
因此网络整理了一份《2024年HarmonyOS鸿蒙开辟全套学习资料》,初衷也很简朴,就是希望能够帮助到想自学提升又不知道该从何学起的朋友,同时减轻各人的负担。



既有得当小白学习的零基础资料,也有得当3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上HarmonyOS鸿蒙开辟知识点,真正体系化!
由于文件比较大,这里只是将部分目录大纲截图出来,每个节点内里都包罗大厂面经、学习笔记、源码讲义、实战项目、解说视频,而且会持续更新
假如你以为这些内容对你有帮助,可以添加VX:vip204888 (备注鸿蒙获取)

一个人可以走的很快,但一群人才气走的更远。不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都接待扫码加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!
以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上HarmonyOS鸿蒙开辟知识点,真正体系化!**
由于文件比较大,这里只是将部分目录大纲截图出来,每个节点内里都包罗大厂面经、学习笔记、源码讲义、实战项目、解说视频,而且会持续更新
假如你以为这些内容对你有帮助,可以添加VX:vip204888 (备注鸿蒙获取)
[外链图片转存中…(img-b2nxUS8J-1712690846218)]
一个人可以走的很快,但一群人才气走的更远。不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都接待扫码加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!

免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

x
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

慢吞云雾缓吐愁

金牌会员
这个人很懒什么都没写!

标签云

快速回复 返回顶部 返回列表