鸿蒙launcher浅析

ops/2025/2/22 22:43:21/

鸿蒙launcher浅析

launcher_1">鸿蒙launcher源码下载

下载地址如下:
https://gitee.com/openharmony/applications_launcher

launcher_5">鸿蒙launcher模块

下载页面已经有相关文件结构的介绍了
在这里插入图片描述

使用鸿蒙编辑器DevEco Studio打开,我使用的版本是渠道版本。官网版本应该也可以,不影响阅读源码。
在这里插入图片描述

结构如图
在这里插入图片描述

  • product 业务形态层:区分不同产品、不同屏幕的各形态桌面,含有桌面窗口、个性化业务,组件的配置,以及个性化资源包。

  • feature 公共特性层:抽象的公共特性组件集合,可以被各桌面形态引用。

  • common 公共能力层:基础能力集,每个桌面形态都必须依赖的模块。

/applications/standard/launcher/
├── common                    # 公共能力层目录
├── docs                      # 开发指南
├── feature                   # 公共特性层目录
│   └── appcenter             # 应用中心
│   └── bigfolder             # 智能文件夹
│   ├── form                  # 桌面卡片管理功能
│   ├── gesturenavigation     # 手势导航
│   ├── pagedesktop           # 工作区
│   ├── recents               # 最近任务
│   ├── settings              # 桌面设置
│   ├── smartdock             # dock工具栏
├── product                   # 业务形态层目录
├── signature                 # 签名证书

launcherui_38">launcher和普通的应用ui展示的区别

之前做过Android launcher,所以对鸿蒙的launcher挺好奇的,看看和普通鸿蒙应用有何区别

  1. 对比demo,新建demo,ui加载方式:
    在这个生命周期onWindowStageCreate
    通过windowStage.loadContent方法设置。
export default class EntryAbility extends UIAbility{onWindowStageCreate(windowStage: window.WindowStage): void {windowStage.loadContent('pages/Index', (err) => {});}
}
  1. 查看launcher
    product/phone目录下
    在这里插入图片描述

launcher的ui加载 是这样的:
使用的不是UIAbility,而是ServiceExtensionAbility,
如此,添加的UI:

import ServiceExtension from '@ohos.app.ability.ServiceExtensionAbility';
export default class MainAbility extends ServiceExtension{onCreate(want: Want): void {....this.initLauncher();}async initLauncher(): Promise<void> {....// create Launcher entry viewwindowManager.createWindow(globalThis.desktopContext, windowManager.DESKTOP_WINDOW_NAME,windowManager.DESKTOP_RANK, 'pages/' + windowManager.DESKTOP_WINDOW_NAME, true, registerWinEvent);....}}

http://www.ppmy.cn/ops/27604.html

相关文章

【Elasticsearch<三>✈️✈️】常见基本属性的用法以及与MySQL的区别

目录 &#x1f378;前言 &#x1f37b;一、索引 1.1 映射关系 &#xff08;mappings) 1.2 映射关系查看 &#x1f37a;二、文档 2.1 删除文档 2.2 更新文档 2.3 批量操作 &#x1f379;三、高级查询&#xff08;Query 检索) &#x1f377;四、章末 &#x1f378;前言 继本…

Linux--环境变量

目录 命令行参数 认识环境变量 环境变量的特性及命令行操作 命令行参数 在介绍环境变量之前&#xff0c;我们先来理解一下命令行参数&#xff0c;因为命令行参数与环境变量的构成是非常相似的。在这里我们以main函数为例&#xff1a; 下面是一段代码&#xff1a; 运行结果&am…

基于FPGA的数字信号处理(5)--Signed的本质和作用

前言 Verilog中的signed是一个很多人用不好&#xff0c;或者说不太愿意用的一个语法。因为不熟悉它的机制&#xff0c;所以经常会导致运算结果莫名奇妙地出错。其实了解了signed以后&#xff0c;很多时候用起来还是挺方便的。 signed的使用方法主要有两种&#xff0c;其中一种…

AI开发的基本流程是什么?

确定目的 在开始AI开发之前&#xff0c;必须明确要分析什么&#xff1f;要解决什么问题&#xff1f;商业目的是什么&#xff1f;基于商业的理解&#xff0c;整理AI开发框架和思路。例如&#xff0c;图像分类、物体检测等等。不同的项目对数据的要求&#xff0c;使用的AI开发手…

【问题排查】Springboot集成RedisTemplate发布Redis数据带有前缀乱码问题排查解决

先说下项目背景&#xff1a; 五一前冲刺新项目&#xff0c;项目springboot2 &#xff0c; 集成stomp协议 和前端进行websocket通信。 之前写过一篇文章关于stomp协议的文章&#xff0c;有兴趣可以看看 【JAVA技术】springboot集成stomp协议实现 用户在线离线 。 测试同学反…

websocket 单点通信,广播通信

Websocket协议是对http的改进&#xff0c;可以实现client 与 server之间的双向通信&#xff1b; websocket连接一旦建立就始终保持&#xff0c;直到client或server 中断连接&#xff0c;弥补了http无法保持长连接的不足&#xff0c;方便了客户端应用与服务器之间实时通信。 参…

JAVASE练手项目-ATM

此项目使用到的技术主要是面向对象和JAVA的常用API和ArrayList实现。可以用来做JAVA的基础练手或者是期末作业。 主要功能是&#xff1a;用户开户&#xff0c;登录&#xff0c;存钱&#xff0c;取钱&#xff0c;转账&#xff0c;注销&#xff0c;修改密码。 注&#xff1a;下…

记录 mod_bcg729 编译过程

操作系统: CentOS7.9 FreeSWITCH: 1.10.7&#xff0c;已经源码编译 cd src/mod/codecs/mod_bcg729 git clone https://github.com/xadhoom/mod_bcg729.git cd mod_bcg729 git clone https://github.com/BelledonneCommunications/bcg729.git 修改 ./bcg729/CMakeLists.t…