OpenHarmony开发实战:构建多种样式弹窗(ArkTS),2024年最新把握这套精编 ...

打印 上一主题 下一主题

主题 1830|帖子 1830|积分 5490

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





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

一个人可以走的很快,但一群人才能走的更远。不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎扫码加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习发展!
点击主页面左上角返回按钮,通过CommonUtils.alertDialog方法弹出警告弹窗,提醒用户是否举行当前操纵,结果如图所示:

  1. // CommonUtils.ets
  2. alertDialog(context: Context.UIAbilityContext) {
  3.   AlertDialog.show({
  4.     // 提示信息
  5.     message: $r('app.string.alert_dialog_message'),
  6.     // 弹窗显示位置
  7.     alignment: DialogAlignment.Bottom,
  8.     // 弹窗偏移位置
  9.     offset: {
  10.       dx: 0,
  11.       dy: CommonConstants.DY_OFFSET
  12.     },
  13.     primaryButton: {
  14.       ...
  15.     },
  16.     secondaryButton: {
  17.       // 退出应用
  18.       context.terminateSelf();
  19.       ...
  20.     }
  21.   });
  22. }
复制代码
日期滑动选择器弹窗

点击出生日期选项,通过CommonUtils.datePickerDialog方法弹出日期选择器弹窗,根据须要选择相应时间,结果如图所示:

  1. // CommonUtils.ets
  2. datePickerDialog(dateCallback) {
  3.   DatePickerDialog.show({
  4.     // 开始时间
  5.     start: new Date(CommonConstants.START_TIME),
  6.     // 结束时间
  7.     end: new Date(CommonConstants.END_TIME),
  8.     // 当前选中时间
  9.     selected: new Date(),
  10.     // 是否显示农历
  11.     lunar: false,
  12.     onAccept: (value: DatePickerResult) => {
  13.       let year = value.year as number;
  14.       let month = value.month as number + CommonConstants.PLUS_ONE;
  15.       let day = value.day as number;
  16.       let birthdate: string = this.getBirthDateValue(year, month, day);
  17.       dateCallback(birthdate);
  18.     }
  19.   });
  20. }
  21. // 获取出生日期值
  22. getBirthDateValue(year: number, month: number, day: number): string {
  23.   let birthdate: string = `${year}${CommonConstants.DATE_YEAR}${month}` +
  24.     `${CommonConstants.DATE_MONTH}${day}${CommonConstants.DATE_DAY}`;
  25.   return birthdate;
  26. }  
  27. // HomePage.ets
  28. build() {
  29.   Column() {
  30.     ...
  31.     TextCommonWeight({
  32.       textImage: $r('app.media.ic_birthdate'),
  33.       title: $r("app.string.title_birthdate"),
  34.       content: $birthdate,
  35.       onItemClick: () => {
  36.         CommonUtils.datePickerDialog((birthValue: string) => {
  37.           this.birthdate = birthValue;
  38.         });
  39.       }
  40.     })
  41.     ...
  42.   }
  43.   ...
  44. }
复制代码
文本滑动选择器弹窗

点击性别选项,通过CommonUtils.textPickerDialog方法弹出性别选择器弹窗,根据须要选择相应性别,结果如图所示:

  1. // CommonUtils.ets
  2. textPickerDialog(sexArray: Resource, sexCallback: (sexValue: string) => void) {
  3.   TextPickerDialog.show({
  4.     range: sexArray,
  5.     selected: 0,
  6.     onAccept: (result: TextPickerResult) => {
  7.       sexCallback(result.value);
  8.     },
  9.     onCancel: () => {
  10.       ...
  11.     }
  12.   });
  13. }
  14. // HomePage.ets
  15. build() {
  16.   Column() {
  17.     ...
  18.     TextCommonWeight({
  19.       textImage: $r('app.media.ic_sex'),
  20.       title: $r("app.string.title_sex"),
  21.       content: $sex,
  22.       onItemClick: () => {
  23.         CommonUtils.textPickerDialog(this.sexArray, (sexValue: string) => {
  24.           this.sex= sexValue;
  25.         });
  26.       }
  27.     })
  28.     ...
  29.   }
  30.   ...
  31. }
复制代码
自定义弹窗

点击兴趣爱好选项,通过customDialogController.open方法弹出自定义弹窗,根据须要选择相应的兴趣爱好,结果如图所示:

自定义弹窗实现分为以下步骤:

  • 在view目次下,点击鼠标右键 > New > ArkTS File,新建一个ArkTS文件,然后定名为CustomDialogWeight子组件。
  • 在CustomDialogWeight的aboutToAppear方法,通过manager.getStringArrayValue方法获取本地资源数据举行初始化。
  1. // CustomDialogWeight.ets
  2. @State hobbyModels: HobbyModel[] = [];
  3. aboutToAppear() {
  4.   let context: Context = getContext(this);
  5.   if (CommonUtils.isEmpty(context) || CommonUtils.isEmpty(context.resourceManager)) {
  6.     Logger.error(CommonConstants.TAG_CUSTOM, 'context or resourceManager is null');
  7.     return;
  8.   }
  9.   let manager = context.resourceManager;
  10.   manager.getStringArrayValue($r("app.strarray.hobbies_data").id, (error, hobbyArray) => {
  11.     if (!CommonUtils.isEmpty(error)) {
  12.       Logger.error(CommonConstants.TAG_CUSTOM, 'error = ' + JSON.stringify(error));
  13.     } else {
  14.       hobbyArray.forEach((hobbyItem: string) => {
  15.         let hobbyModel = new HobbyModel();
  16.         hobbyModel.label = hobbyItem;
  17.         hobbyModel.isChecked = false;
  18.         this.hobbyModels.push(hobbyModel);
  19.       });
  20.     }
  21.   });
  22. }
复制代码

  • 当用户点击确定按钮时,通过setHobbiesValue方法处理惩罚自定义弹窗选项结果。
  1. // CustomDialogWeight.ets
  2. @State hobbyModels: HobbyModel[] = [];
  3. @Link hobbies: string;
  4. // 处理自定义弹窗选项结果
  5. setHobbiesValue(hobbyModels: HobbyModel[]) {
  6.   if (CommonUtils.isEmptyArr(hobbyModels)) {
  7.     Logger.error(CommonConstants.TAG_CUSTOM, 'hobbyModels length is 0');
  8.     return;
  9.   }
  10.   let hobbiesText: string = '';
  11.   hobbiesText = hobbyModels.filter((isCheckItem: HobbyModel) => isCheckItem?.isChecked)
  12.     .map((checkedItem: HobbyModel) => {
  13.       return checkedItem.label;
  14.     })
  15.     .join(CommonConstants.COMMA);
  16.   if (hobbiesText.length > 0) {
  17.     this.hobbies = hobbiesText;
  18.   }
  19. }
  20. build() {
  21.   Column() {
  22.     ...
  23.     Row() {
  24.       Button($r('app.string.cancel_button'))
  25.         .dialogButtonStyle()
  26.         .onClick(() => {
  27.           this.controller.close();
  28.         })
  29.       Blank()
  30.         ...
  31.       Button($r('app.string.definite_button'))
  32.         .dialogButtonStyle()
  33.         .onClick(() => {
  34.           this.setHobbiesValue(this.hobbyModels);
  35.           this.controller.close();
  36.         })
  37.     }
  38.   }
  39.   ...
  40. }
  41. @Extend(Button) function dialogButtonStyle() {
  42.   ....
  43. }
复制代码

  • 通过@Link修饰的hobbies把值赋给HomePage的hobbies,然后hobbies革新显示内容。
  1. // HomePage.ets
  2. @State hobbies: string = '';
  3. customDialogController: CustomDialogController = new CustomDialogController({
  4.   builder: CustomDialogComponent({
  5.     hobbies: $hobbies
  6.   }),
  7.   alignment: DialogAlignment.Bottom,
  8.   customStyle: true,
  9.   offset: {
  10.     dx: 0,
  11.     dy: CommonConstants.DY_OFFSET
  12.   }
  13. });
  14. build() {
  15.   Column() {
  16.     ...
  17.     TextCommonWeight({
  18.       textImage: $r('app.media.ic_hobbies'),
  19.       title: $r("app.string.title_hobbies"),
  20.       content: $hobbies,
  21.       onItemClick: () => {
  22.         // 打开自定义弹窗
  23.         this.customDialogController.open();
  24.       }
  25.     })
  26.   }
  27.   ...
  28. }
复制代码
最后

有许多小伙伴不知道学习哪些鸿蒙开发技术?不知道须要重点把握哪些鸿蒙应用开发知识点?而且学习时频仍踩坑,终极浪费大量时间。所以有一份实用的鸿蒙(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面向未来设计
  • 鸿蒙系统移植和裁剪定制
  • ……

安装DevEco Studio


  • 运用你的第一个ArkTS应用
  • ArkUI声明式UI开发
  • .……

《鸿蒙开发进阶》



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


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

本帖子中包含更多资源

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

x
回复

举报

0 个回复

倒序浏览

快速回复

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

本版积分规则

愛在花開的季節

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