Launcher是一款专为安卓系统打造的桌面启动器。作为安卓系统核心组件之一,它不仅功能强大,还提供了丰富的个性化选项。用户可以自由切换多种桌面主题,满足不同审美需求。此外,该软件还支持自定义修改原本无法更改图标的第三方应用,让你的桌面风格随心所欲、极具个性。
沉浸式的视觉体验,带来前所未有的交互感受。
流畅的滑动操作,仿佛在空中自由翱翔;
结合磨砂玻璃效果,桌面呈现出朦胧与清晰并存的美感,层次分明又和谐统一。
界面元素自然融合,整体观感更加协调。
锁屏界面、待机画面以及天气信息布局井然有序,所有内容浑然一体。
采用更贴近用户的交互设计
增强的操作反馈机制,配合细腻的动画效果管理,提升互动乐趣,让每一次触控都轻松愉悦。
自动记录用户近期使用手机时执行的各项操作;
提供多种应用展示模式供用户灵活选择;
可根据个人喜好对已安装的应用进行隐藏设置;
一键将常用程序添加至主屏幕,便于快速查找和启动;
定期推送精选壁纸资源,丰富你的视觉体验;
支持多种方式将应用推荐给身边好友,轻松实现分享。
1.Launcher.java: 主要负责launcher的核心activity逻辑。
2.DragLayer.java: 作为launcher布局的根视图,DragLayer扮演着控制器的角色,用于处理拖拽事件及初步的事件分发。其通过onInterceptTouchEvent(MotionEvent)方法拦截触摸事件,若检测到长按拖动行为,则阻止事件向下传递,并交由onTouchEvent()处理,从而实现item的移动。对于非拖动事件则正常传递给目标view。如需定制特定事件处理逻辑,可调整onInterceptTouchEvent()实现。
3. DragController.java: 定义了拖拽行为所需的接口规范。包含一个监听器接口DragListener(内含onDragStart()与onDragEnd()两个回调函数),分别在拖动开始与结束时触发。例如DeleteZone会在拖动开始时调用onDragStart()显示删除区域,在拖动结束时调用onDragEnd()将其隐藏。另外定义了startDrag()与setDragItemInfo()两个方法,前者用于传递拖动对象的信息,后者用于设定item的位置与尺寸参数。常量DRAG_ACTION_MOVE表示移动操作(原位置item会被删除),DRAG_ACTION_COPY表示复制操作(保留原item)。
4.LauncherModel.java: 负责数据库操作的辅助类。封装多个线程任务,其中ApplicationsLoader用于加载应用程序列表,DesktopItemsLoader用于加载工作区内容。其他方法主要用于封装数据库更新逻辑,如在添加、删除或替换应用时同步更新数据库与UI状态。
5.Workspace.java: 抽象化的桌面容器,由多个CellLayout组成,从更高层面处理各类交互事件。
6.LauncherProvider.java: launcher的数据存储模块,记录桌面item的相关信息。初始化过程中会调用loadFavorites(db)方法解析default_workspace.xml配置文件,将预设桌面内容写入数据库,实现初始桌面布局。
7.CellLayout.java:构成workspace的基本单元,继承自ViewGroup,具备dragSource与dropTarget双重身份,允许内部item被拖出,也支持接收外部拖入的item。相关参数在workspace_screen中定义。
8.ItemInfo.java: 所有item类型的基类,包含id、cellX、cellY、spanX、spanY、screen、itemType、container等通用属性。
9.UserFolder.java: 用户自定义文件夹,支持将多个item收纳其中。点击打开文件夹,长按标题栏可进行重命名。
10.LiveFolder.java: 系统内置的动态文件夹,如联系人、书签等类型。
11.DeleteZone: 删除区域组件,通常处于隐藏状态。当用户拖动item时显示,若将item拖至该区域则执行删除操作。其实现依赖于DropTarget与DragListener两个接口。
12.LauncherSettings.java: 常量字符串定义类,涵盖数据库字段名称、container类型、itemType枚举值,以及特殊widget(如搜索框、时钟等)的标识。
起初我对Launcher并没有太大兴趣,因为在URL Schemes领域,Launch Center Pro已经取得了显著进展。如今的URL Schemes早已超越简单的跨应用跳转,甚至能够直达目标应用的特定界面。更进一步地,它还能大幅简化重复性操作,仅保留必要输入步骤,极大提升效率。
以1Password为例:
如果只能打开1Password应用本身,那意义不大。
但如果能直接跳转到搜索界面,就能省去手动进入搜索页面的操作,实用性大大增强。
而Launch Center Pro真正强大的地方在于:
你可以创建一个常用账户ID列表,每次只需选择对应服务,跳转至1Password后输入主密码即可查看指定账户信息。
甚至可以在Launch Center Pro中直接输入搜索关键词,跳转后主密码验证完成后即显示匹配结果。
这两项功能已经非常实用。尤其在iOS 8之前,1Password尚未支持Touch ID时,每次登录都需要手动输入密码,过程繁琐。我曾借助Launch Center Pro巧妙绕过这一限制。
以往查找密码流程如下:
找到1Password图标 → 打开应用 → 输入密码 → 选择分类 → 点击搜索 → 输入关键词 → 查看结果
整个流程中除了输入关键信息外,其余均为重复操作。而借助Launch Center Pro,针对高频使用的账户,几乎省去了所有中间步骤;即便是不常用的账户,也仅需完成必要的输入动作。
通过这个例子可以看出,现在的URL Schemes远不止“跳转”这么简单。
相比之下,Launcher的功能仍停留在基础层面,这在某种程度上显得有些落后。
不过,Launcher也有它的独特优势——尽管这些优势导致它一度下架App Store——包括可在通知中心直接触发操作,以及跳转至系统设置的具体选项。
通知中心触发动作的优势
无需打开应用,直接在通知中心执行所需操作,显然更快捷高效。同时,主屏幕上的图标与角标容易干扰注意力,影响操作连贯性。因此,在通知中心完成操作更具效率优势。
解锁体验因场景而异
在设备锁屏状态下,从通知中心触发动作与进入主界面再执行操作存在本质区别:解锁动作发生在操作前还是操作中。
以我使用Moneywiz记账为例:
日常记账有两种方式:一是即时记录,二是集中整理。对于没有小票的消费,我会尽量当场记录,以免遗忘。
使用Launch Center Pro时,“即时记录”的习惯并不强烈,因为“解锁”这一环节夹在“想记账”与“实际记账”之间,让人产生惰性。此外,还需经历从主屏幕打开Launch Center Pro,再进入Monewiz新支出界面等多个步骤。
但从通知中心直接进入Monewiz的新支出界面则完全不同。“解锁”不再是阻碍行动的障碍,而是嵌入在操作流程之中。解锁后呈现的并非杂乱的主界面,而是Monewiz的新增支出界面,我可以立刻开始选择支付对象[3]并填写金额。