#星光计划2.0#小型鸿蒙系统桌面应用源码解析 原创

鸿蒙开发
发布于 2021-12-7 22:10
浏览
2收藏

本文正在参与51CTO HarmonyOS技术社区创作者激励计划-星光计划2.0
1 背景说明(文中所说截止到openharmony3.0版本)
openharmony从1.0开始在3516板子就可以运行桌面应用,也就是下面这个画面
#星光计划2.0#小型鸿蒙系统桌面应用源码解析-鸿蒙开发者社区
1.0版本的四个桌面应用包括launcher(系统桌面),camera(相机),setting(设置),gallery(图库)和
screensaver(屏保),这几个程序在小型鸿蒙上就没有变过,采用c++ 开发的,编译时被打包成hap文件。其中1.0版本的hap没有源码,是编译时拷贝到安装目录的。
另外特意说明一下的是,小型设备的鸿蒙在3516也两套代码,这两套代码采用不同的操作系统包括liteOs-A和linux,其中采用linux内核的版本在openharmony2.2才出现。
另外说一下标准系统,标准系统采用的Linux,它的hap桌面应用采用的是js开发也即是arkui,他的编译代码在openharmony2.0出现的,它的运行界面如下:
#星光计划2.0#小型鸿蒙系统桌面应用源码解析-鸿蒙开发者社区
2 下面介绍一下小型鸿蒙的launcher代码,采用c++开发,代码路径如下:
#星光计划2.0#小型鸿蒙系统桌面应用源码解析-鸿蒙开发者社区
里边的ability,slice和harmonyOs中java和js中的概念类似,config.json是对整个应用的配置,比如包名为com.huawei.launcher,这个包名也是应用程序的进程名。
AppInfo是对单个hap应用的封装,包括名字,图标,点击的回调,长按的回调,在桌面上的显示位置。
AppManage是对app的管理类,包括启动应用,卸载应用。
LongPressView是长按应用图标后的弹窗控件里边包含取消和卸载。
SwipeView是一个滑动控件,放到了slice的rootview中,目前代码中设置为可以滑动3个页面。
TimeWeatherView是左侧的时间,星期,和空气,污染的显示,时间是实时更新,但温度和空气污染指数是写死的。
ui_config.h是一些常量,比如天气的图标,桌面的背景,label控件的高度,swipeview的页面个数等。
ViewGroupPage是桌面右半部三个应用的显示容器控件和滑到2和3位置后的页面,里边有对桌面应用图标位置摆放的计算和显示信息的设置。
里边一些系统控件的名字和ios控件的名字很像,大家都这样命名,也没办法必须得想个不一样的名字啊。
下面玩些雕虫小技,我们把页面的天气改一下,空气污染改一下,把天气的位置和应用显示的位置调换一下,还有就是由于右上角时间右侧有点被盖住,我把它挪到中间来,编译运行,效果如下:
#星光计划2.0#小型鸿蒙系统桌面应用源码解析-鸿蒙开发者社区
以上只是说了一些这个应用本身的代码,另外和它交互的像怎获取应用列表,ui页面的控件分类,计时的实现等,后续再介绍。

©著作权归作者所有,如需转载,请注明出处,否则将追究法律责任
已于2021-12-10 10:28:53修改
2
收藏 2
回复
举报
回复
    相关推荐