HarmonyOS运动开发:打造便捷的静态快捷菜单

##鸿蒙核心技术##运动开发#

前言

在运动类应用中,用户往往需要快速访问常用功能,如查看成绩、赛事信息或开始运动。为了提升用户体验,鸿蒙(HarmonyOS)提供了静态快捷菜单功能,允许用户从桌面直接跳转到应用的特定页面。本文将结合鸿蒙开发实战经验,深入解析如何开发静态快捷菜单,实现快速跳转页面的功能。

一、为什么需要静态快捷菜单

静态快捷菜单为用户提供了一种快速进入应用特定功能的方式,无需打开应用后再进行多次点击。这对于运动类应用尤其重要,因为用户可能需要在运动前快速启动运动模式或查看运动数据。通过静态快捷菜单,用户可以直接从桌面启动这些功能,大大提高了应用的便捷性和用户体验。

二、配置静态快捷菜单

1.配置文件

静态快捷菜单的配置文件位于base->profile目录下。你需要在该目录下创建一个shortcuts_config.json文件,并定义快捷菜单项。以下是配置文件的核心内容:

{
  "shortcuts": [
    {
      "shortcutId": "my_scores",
      "label": "$string:shortcut_grades",
      "icon": "$media:icon_shortcut_grades",
      "wants": [
        {
          "bundleName": "包名",
          "moduleName": "entry",
          "abilityName": "EntryAbility",
          "parameters": {
            "action": "action.view.scores"
          }
        }
      ]
    },
    {
      "shortcutId": "my_events",
      "label": "$string:shortcut_race",
      "icon": "$media:icon_shortcut_race",
      "wants": [
        {
          "bundleName": "包名",
          "moduleName": "entry",
          "abilityName": "EntryAbility",
          "parameters": {
            "action": "action.view.events"
          }
        }
      ]
    },
    {
      "shortcutId": "start_running",
      "label": "$string:shortcut_sport",
      "icon": "$media:icon_shortcut_sport",
      "wants": [
        {
          "bundleName": "包名",
          "moduleName": "entry",
          "abilityName": "EntryAbility",
          "parameters": {
            "action": "action.start.running"
          }
        }
      ]
    }
  ]
}

核心点解析

shortcutId:每个快捷菜单项的唯一标识符。

label:快捷菜单项的显示名称,支持国际化资源。

icon:快捷菜单项的图标资源。

wants:定义了点击快捷菜单项时要启动的目标页面及其参数。

2.在模块的abilities中添加配置

在模块的abilities配置文件中,添加对快捷菜单配置的引用。以下是配置代码:

"metadata": [
  {
    "name": "ohos.ability.shortcuts",
    "resource": "$profile:shortcuts_config"
  }
]

核心点解析

metadata:定义了与能力相关的元数据。

name:元数据的名称,固定为ohos.ability.shortcuts

resource:指向快捷菜单配置文件的路径。

三、处理快捷菜单跳转

EntryAbility中,你需要处理快捷菜单项的点击事件。通过onNewWant方法,你可以捕获快捷菜单项的点击事件,并根据传递的参数跳转到相应的页面。以下是处理逻辑的核心代码:

onNewWant(want: Want, launchParam: AbilityConstant.LaunchParam): void {
  // 处理快捷方式跳转
  if (want.parameters?.action) {
    let action = want.parameters['action'];
    if (action) {
      this.handleShortcutAction(action as string);
    }
  }
}

private handleShortcutAction(action: string): void {
  switch (action) {
    case 'action.view.scores':
      LibNavigator.pushPathByName(SportRouteName.MetronomePage, undefined);
      break;
    case 'action.view.events':
      LibNavigator.pushPathByName(SportRouteName.FileSelectPage, undefined);
      break;
    case 'action.start.running':
      LibNavigator.pushPathByName(SportRouteName.RunningSettingPage, undefined);
      break;
    default:
      entryLogger.warn(`Unknown shortcut action: ${action}`);
  }
}

核心点解析

onNewWant:当用户点击快捷菜单项时,系统会调用onNewWant方法。

want.parameters:获取传递的参数,包括自定义的action

handleShortcutAction:根据action的值,调用相应的页面跳转逻辑。

四、总结与展望

通过鸿蒙的静态快捷菜单功能,你可以为用户提供快速跳转到应用特定功能的便捷方式。

全部评论

相关推荐

06-12 16:00
天津大学 Java
牛客302360988号:腾讯坏事做尽,终面挂是最破防的 上次被挂了后我连简历都不刷了
点赞 评论 收藏
分享
双9硕,秋招+春招0offer。发个帖子感慨下,给点经验教训吧。只能说,读研选个好组和好老师基本赢了一半了。自我感觉能力还可以,本科毕业去的单位给我和研究生一个价,小sp。但是干了一年还是追逐梦想去读研去了。考研综合成绩全院第二上岸,当时有两个老师要我,一个做导航一个做无人机,选了无人机,结果开学前被莫名其妙调剂给一个没招到学生的老师(没有给我反应时间),就这么稀里糊涂开始我稀碎的研究生三年了。刚入学,全组最大的就是研三,整个组没有一点传承,所有人的课题和方向完全独立,不开组会。我导师怎么说呢,属于自己昏头还摆烂的老师,我从研一到研三其实就是0指导,期间换了3次课题,而且跨度非常大,从任务分配到视觉slam到多智能体强化学习,只为了干他的项目。问他学术问题就说“你已经是个研究生了,要学会自己解决问题。”“我这个阶段已经不需要看这些东西了。”“你不能什么问题都等着我给你解决。“总之课题研究只能完完全全靠自己,全组3年憋不出一篇sci,我师兄都不要学位证,拿了毕业证直接润了。说到工作,最后的课题也是异常的抽象,作战层面的任务规划,搞的东西在地方企业可以说是毫无用处。论控制不如别人专门研究各种无人设备的同学,论算法又比不过计算机等科班同学,导致我在找工作的时候,很容易被别人上位替代。记得当时华为hr直接问我,你到底是做啥的啊?我都不知道该怎么回复。简历里参与的项目也是一些很抽象的xx项目,所以只能去试着投一些沾点边的岗位。结果就是大厂基本投了简历就挂了,机考的机会也没有,有机考的过了也基本也停在复筛就不动了。半年以来力扣刷了也大几百了,到最后根本没有展示的机会。有时候看着别的同学发高水平文章,找到好工作,我是真的羡慕。主要是我也没比人家少努力,三年了每周平均9116,研二的时候十月一整个假期都在出差,最后还是一地鸡毛。研究生真的除非天时地利人和都沾点,否则光自己努力没啥用,没有好的资源和方向就是闭门造车。现在终于毕业了,我都准备离校了,昨晚老师发消息问小论文(第二篇)写完了吗?我写毕业论文,他问我小论文写完了吗?我答辩前一天,他跟我说你答辩完小论文写一写,我毕业了,他还在催我写小论文。就为了挂靠他的项目。当年我第一篇小论文都投出去都接手了,还在打电话让我加2个完全不认识的人,而且根本不是啥高水平文章,就是为了毕业整理了下手头实验投的会议。😅
牛客784110981号:这不和我差不多,我进来就没有师兄,运气稍微好一点的是,老板给我整了台3080,研二给老板整了2个方向,估摸着一区top有了,可惜我自己定的方向是在研一没啥经验,不咋好。离校前也叫我吧大论文总结成小论文给他,好给师弟毕业,我直接复制粘贴小改一点就给了,三年三个方向加三篇小论文。可惜没有实习,最后去了一个风评极差的公司,工资也不高。还不如本科就毕业呢,本科室友都20多w了
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务