快捷app — ShortX 悬浮窗应用启动器
长按图标置顶常用应用 · 实时搜索 · 冻结管理 · Material You 深色主题
功能概览
网格启动面板
5 列网格展示已安装应用,400×420dp 悬浮窗,记住上次位置,拖拽标题栏移动
实时搜索
输入即过滤,100ms 防抖,支持应用名和包名匹配;面板顶栏和设置面板各有独立搜索入口
置顶应用
长按图标置顶或取消,最多 200 个,置顶列表持久保存
冻结 / 解冻
冻结标签页展示已冻结应用;点击冻结应用自动解冻后启动;需 root + pm freeze 命令
可见性设置
⚙ 面板控制哪些应用出现在启动器,支持全选 / 全不选 / 逐项勾选,设置持久保存
快速启动优化
两阶段启动:先渲染空面板(200ms 入场动画),后台扫描应用并分片加载图标,首屏 12 个应用优先显示
使用方法
- 触发方式:在 ShortX 中为本指令配置触发器(如桌面双击、手势、磁贴等),触发后弹出悬浮面板
- 启动应用:点击图标即启动;若应用已冻结,会先自动解冻再启动
- 置顶应用:长按图标,Toast 提示”已置顶”/”已取消置顶”
- 搜索:点击 🔍 按钮展开搜索框,输入关键词实时过滤
- 管理可见性:点击 ⚙ 按钮打开设置面板,勾选/取消勾选控制应用是否显示,支持搜索过滤
- 移动窗口:长按标题栏拖拽移动面板位置,松手自动保存
- 切换标签:顶部”正常”/”冻结”标签切换显示全部应用或已冻结应用
界面结构
┌──────────────────────────────────┐
│ 应用 🔍 ⚙ ✕ │ ← 标题栏(可拖拽)
├──────────────────────────────────┤
│ 🔍 搜索应用... [✕] │ ← 搜索框(点击🔍展开)
├──────────────────────────────────┤
│ [ 正常 ] [ 冻结 ] │ ← 标签切换
├──────────────────────────────────┤
│ ┌──┐ ┌──┐ ┌──┐ ┌──┐ ┌──┐ │
│ │📱│ │💬│ │🎵│ │📷│ │⚙️│ │ ← 置顶应用
│ └──┘ └──┘ └──┘ └──┘ └──┘ │
│ ┌──┐ ┌──┐ ┌──┐ ┌──┐ ┌──┐ │
│ │❄️│ │ │ │ │ │ │ │ │ │ ← 全部应用
│ └──┘ └──┘ └──┘ └──┘ └──┘ │
│ ┌──┐ ┌──┐ ┌──┐ ┌──┐ ┌──┐ │
│ │ │ │ │ │ │ │ │ │ │ │
│ └──┘ └──┘ └──┘ └──┘ └──┘ │
└──────────────────────────────────┘
⚙ 设置面板(覆盖层):
┌──────────────────────────────────┐
│ 显示设置 ✕ │
│ 🔍 搜索应用... [✕] │
│ ☑ 微信 ☑ QQ │
│ ☑ 设置 ☐ 某应用 │
│ ☑ 全部应用 ☐ 另一个 │
│ ──────────────────────────── │
│ [ 全选 ] [ 全不选 ] [ 关闭 ] │
└──────────────────────────────────┘
技术细节
运行环境与架构
- JS 引擎:Rhino(ES5 语法,var 声明,JavaAdapter 绑定 Android View)
- UI 渲染:WindowManager + TYPE_APPLICATION_OVERLAY 悬浮窗,全自绘界面
- 线程模型:两个 HandlerThread — UI Thread 处理界面交互,Worker Thread 扫描应用和加载图标
- 图标管理:Drawable → Bitmap 缓存(LRU,上限 50 个),异步加载避免阻塞 UI
启动流程
采用两阶段启动策略提升体感速度:
- 即时渲染(0ms):立即在 UI 线程创建空面板并添加到 WindowManager,播放缩放+透明度入场动画(180ms,从 0.92→1.0)
- 后台填充(50ms 延迟):Worker Thread 扫描已安装应用列表,完成后回 UI 线程刷新 GridView;首屏 12 个图标同步预加载,后续图标分批异步加载
冻结状态同步也分两阶段:先用 pm list packages -i 快速估算,260ms 后后台补齐真实冻结状态。
数据持久化
所有用户状态通过 Settings.Global 持久存储,重启后自动恢复:
- 窗口位置:上次面板坐标,下次打开同位置
- 当前标签:正常/冻结标签选择
- 置顶列表:最多 200 个包名
- 可见性映射:每个应用的显示/隐藏状态(新用户首次打开默认全部显示)
- 错误日志:最后一次异常信息,便于排查
配色方案
- 主色:#7C4DFF(蓝紫),用于标签选中、按钮、置顶标识
- 表面:#2D2D3A(深灰),面板和卡片背景
- 背景:#1A1A23(近黑),悬浮窗底色
- 次色:#5C6BC0(靛蓝),默认图标色、辅助元素
冻结功能实现
- 检测:通过
pm list packages -i获取未安装(已冻结)包名列表 - 解冻:执行
pm unfreeze <pkg>,解冻后 200ms 延迟自动启动应用 - 冻结:执行
pm freeze <pkg>,从当前列表移除并刷新 - 前提:设备需 root 权限或 ADB shell 权限
性能优化
- 图标 Bitmap 缓存上限 50 个,每加载 10 次检查并清理多余
- 首屏 12 个应用图标优先同步加载,剩余图标在 300ms 后分批异步加载
- 搜索输入 100ms 防抖,减少高频过滤
- 关闭面板时移除所有 Handler 回调并关停线程池,防止内存泄漏
- 图标加载通过
ExecutorService(2 线程)并发,避免 UI 卡顿
环境要求
- Android 设备
- 安装 ShortX 环境
- 悬浮窗权限
- root 权限(冻结/解冻功能需要)
Powered by Rhino ES5 | Material You Design | ShortX
20260831202356403-ShortX-快捷app.txt
96.9K
© 版权声明
文章版权归作者所有,未经允许请勿转载。
THE END








暂无评论内容