开箱即用的个人主页页面开发实战—基于HarmonyOS 5.0 (Next)和ArkTS的实 ...

打印 上一主题 下一主题

主题 1029|帖子 1029|积分 3087

开箱即用的个人主页页面开发实战—基于HarmonyOS 5.0 (Next)和ArkTS的实现【HarmonyOS 5.0(Next)】

一、HarmonyOS 5.0(Next)革新计划理念,打造和谐美学

在科技日新月异的今天,操纵系统作为智能设备的灵魂,正不停推动着数字生存的变革。华为,作为全球领先的科技企业,于近期正式推出了其原生鸿蒙操纵系统的最新版本——HarmonyOS 5.0(Next),这一版本不仅标志着鸿蒙生态的再次飞跃,更是一次对用户体验的深度重塑和技术创新的全面展现。
1.革新计划理念,打造和谐美学
HarmonyOS 5.0(Next)采用了全新的“和谐美学”计划理念,将光元素奇妙融入系统计划中。通过算法模拟按钮光照效果,实现笔墨卡片与配景的完善融合,为用户带来更加灵动、惊艳的界面体验。这一计划不仅限于系统原生界面,更广泛适用于第三方应用步伐,让用户在每一个应用中都能感受到视觉的愉悦。
2.多设备协同,无缝流转新体验
得益于全新的分布式软总线技术,HarmonyOS 5.0(Next)实现了多设备间的无缝流转与共享。无论是跨设备扫描、互通图库,还是跨设备剪贴板、应用内视频投放,都能轻松实现。用户可以在手机、平板、电视等设备间自由切换当前使命,如观看视频、阅读小说等,无需担心进度丢失,真正实现了多设备间的协同工作。
3.智能化应用,小艺助手全面升级
基于盘古大模子打造的系统级AI——小艺助手,在HarmonyOS 5.0(Next)中迎来了全面升级。它不仅能够理解用户的自然语言指令,更能在多个场景下智能识别用户需求,提供个性化的服务。无论是快速生成论文摘要、头脑导图,还是圈选商品查看信息、转账操纵,小艺助手都能轻松应对,让用户摆脱繁琐的操纵,享受更高效的数字生存。

1.1 项目配景

HarmonyOS(鸿蒙操纵系统)是华为公司推出的一种分布式操纵系统。它被计划为一种全场景、全连接的操纵系统,旨在实现在各种设备之间的无缝协同和共享,包括智能手机、平板电脑、智能穿戴、智能家居、车载系统等。HarmonyOS的目标是构建一个统一的、开放的、全场景的操纵系统生态系统。
1.2 ArkTS详解

ArkTS是鸿蒙生态的应用开发语言。它在保持TypeScript(简称TS)基本语法风格的基础上,对TS的动态范例特性施加更严酷的束缚,引入静态范例。同时,提供了声明式UI、状态管理等相应的能力,让开发者可以以更简洁、更自然的方式开发高性能应用。
自然简洁语法
ArkTS提供了简洁自然的声明式语法、组件化机制、数据-UI自动关联等能力,实现了贴近自然语言,誊写效率更高的编程方式,为开发者带来易学、易懂、极简开发的优质体验。
轻量化并发机制
ArkCompiler运行时在HarmonyOS上提供了Worker API支持并发编程。在运行时实例内存隔离的基础上,ArkCompiler通过共享运行实例中的不可变或者不易变的对象、内建代码块、方法字节码等技术手段,优化了并发运行实例的启动性能和内存开销。
二.HarmonyOS应用开发实战—开箱即用的个人主页页面详情


2.1 ArkTS页面源码

  1.      TabContent() {
  2.         Column() {
  3.           Column() {
  4.             Stack() {
  5.               Image($r('app.media.toxiang'))
  6.                 .width("131.1vp")
  7.                 .height("139.21vp")
  8.                 .offset({ x: "-0.33vp", y: "-20.98vp" })
  9.             }
  10.             .width("99.7%")
  11.             // .height("105.66vp")
  12.             .offset({ x: "0.46vp", y: "-292.54vp" })
  13.             .margin(20)
  14.             // .backgroundColor("#8adff5")
  15.             Stack() {
  16.               Stack() {
  17.                 Row(){
  18.                   Image($r('app.media.exid'))
  19.                     .width("40.68vp")
  20.                     .height("40.79vp")
  21.                   Text("  退出登录")
  22.                     .width("262.68vp")
  23.                     .height("43.79vp")
  24.                     .fontSize("20fp")
  25.                 }
  26.               }
  27.               // .backgroundColor("#a0d9f6")
  28.               .width("90%")
  29.               .height("62.73vp")
  30.               .offset({ x: "1.33vp", y: "-36.77vp" })
  31.               .onClick(()=>{
  32.                 router.replaceUrl({
  33.                   url: "pages/Index"
  34.                   // this.paramsFromIndex?.['name']
  35.                 })
  36.               })
  37.               Stack() {
  38.                 Row(){
  39.                   Image($r('app.media.huodong'))
  40.                     .width("40.68vp")
  41.                     .height("40.79vp")
  42.                   Text("  新增活动")
  43.                     .width("262.68vp")
  44.                     .height("43.79vp")
  45.                       // .offset({ x: "34.29vp", y: "-0.17vp" })
  46.                     .fontSize("20fp")
  47.                 }
  48.               }
  49.               // .backgroundColor("#a0d9f6")
  50.               .width("90%")
  51.               .height("62.73vp")
  52.               .offset({ x: "1.33vp", y: "-115.67vp" })
  53.               .onClick(()=>{
  54.                 router.replaceUrl({
  55.                   url: "pages/demo2",
  56.                   params: {
  57.                     activities:this.activities
  58.                   }
  59.                 })
  60.               })
  61.               Stack() {
  62.                 Row(){
  63.                   Image($r('app.media.canyu'))
  64.                     .width("40.68vp")
  65.                     .height("40.79vp")
  66.                   Text("  已参与的活动")
  67.                     .width("262.68vp")
  68.                     .height("43.79vp")
  69.                       // .offset({ x: "34.29vp", y: "-0.17vp" })
  70.                     .fontSize("20fp")
  71.                 }
  72.               }
  73.               .width("90%")
  74.               .height("62.73vp")
  75.               // .backgroundColor("#a0d9f6")
  76.               .offset({ x: "1.33vp", y: "-192.39vp" })
  77.               .onClick(() => {
  78.                 router.replaceUrl({
  79.                   url: "pages/canyu",
  80.                   params: {
  81.                     activities:this.activities
  82.                   }
  83.                 })
  84.               })
  85.             }
  86.             .width("99.4%")
  87.             .height("465.88vp")
  88.             .offset({ x: "0.92vp", y: "-286.87vp" })
  89.           }
  90.           .width("100%")
  91.           .height("100%")
  92.           .offset({ x: "0vp", y: "311.31vp" })
  93.           .justifyContent(FlexAlign.Center)
  94.         }
  95.         .width("100%")
  96.         .height("100%")
  97.       }
  98.       .tabBar(this.TabBuilder(1));
复制代码
2.2 代码解析

这段代码是在构建一个包罗多个选项卡内容的用户界面。以下是对代码的详细分析:

  • 使用TabContent组件作为整体结构容器。
  • 在TabContent中嵌套了多个Column、Stack和Row组件,用于组织和结构各个元素。
  • 首先,使用一个Stack组件放置了一个图片(Image($r('app.media.toxiang'))),并设置了其宽度、高度和偏移量。
  • 接下来,定义了一个包罗三个子Stack的结构。每个子Stack中都包罗一个Row,在Row中分别放置了一个图标(Image)和一个文本(Text)。

    • 第一个子Stack中的文本为"退出登录",当点击时,会使用router.replaceUrl进行页面跳转,跳转到"pages/Index"。
    • 第二个子Stack中的文本为"新增活动",当点击时,会使用router.replaceUrl进行页面跳转,跳转到"pages/demo2",并将activities状态变量作为参数传递。
    • 第三个子Stack中的文本为"已参与的活动",当点击时,会使用router.replaceUrl进行页面跳转,跳转到"pages/canyu",并将activities状态变量作为参数传递。

  • 这三个子Stack分别设置了宽度、高度、偏移量和点击变乱处理函数。
  • 最外层的Column和Stack组件设置了宽度、高度、偏移量和对齐方式(居中)。
  • 最后,调用.tabBar(this.TabBuilder(1))为TabContent添加了标签栏,这里的TabBuilder可能是一个自定义的方法,用于生成标签栏的内容。
整个代码结构清晰,通过嵌套的结构组件和方法封装实现了选项卡式界面的计划。用户可以通过点击不同的选项来导航到不同的页面,同时在部分页面跳转时传递了必要的数据(activities)。这种结构方式有助于提高用户体验和应用步伐的可导航性。
2.3 心得


  • 结构层次清晰:代码中使用了多个嵌套的结构组件(如Column、Stack和Row),这些组件的组合使得结构层次清晰,易于理解和维护。通过合理地设置宽度、高度、偏移量和对齐方式,实现了界面的精细结构和调解。
  • 变乱处理简洁:对于每个选项卡项,都绑定了点击变乱处理函数。这些函数使用router.replaceUrl进行页面跳转,并根据必要传递参数。这种方式使得变乱处理逻辑简洁明确,易于理解和修改。
  • 状态管理:虽然在这个代码片段中没有直接看到状态变化的处理,但可以看到在页面跳转时,将activities状态变量作为参数传递。这表明在应用步伐的其他部分可能存在状态管理机制,用于存储和更新活动数据。
  • 可复用性和模块化:尽管这段代码只展示了选项卡内容的一部分,但其结构计划具有精良的可复用性和模块化特性。例如,每个子Stack中的Row和点击变乱处理函数都可以作为一个独立的组件或模块进行复用和定制。
  • 用户体验考虑:代码中对各个元素的尺寸、位置和样式进行了过细的设置,体现了对用户体验的关注。例如,图标和文本的巨细、颜色和间距等都被仔细调解,以提供舒适的视觉效果和交互体验。
  • 组件化开发:整个界面由多个组件组成,每个组件负责一部分功能和结构。这种组件化开发方式有利于代码的组织和维护,同时也方便进行功能扩展和迭代。
总的来说,这段代码展示了使用OHOS进行UI开发的一些最佳实践和注意事项,包括清晰的结构计划、简洁的变乱处理、状态管理、可复用性和模块化开发以及对用户体验的重视。理解和应用这些原则和技术,可以帮助开发者编写出更加高效、可维护和具有精良用户体验的OHOS应用步伐。

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

本帖子中包含更多资源

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

x
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

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

本版积分规则

麻花痒

论坛元老
这个人很懒什么都没写!
快速回复 返回顶部 返回列表