Crosshair 中文文档 下载 App

悬浮窗叠加层的工作原理:准星为什么能浮在游戏上面

准星能盖在游戏画面上,靠的是安卓系统的悬浮窗(overlay)机制。理解这一层,后面遇到权限报错、准星消失之类的问题就好排查了。

安卓的窗口分层

安卓把屏幕内容分成很多层:最底下是壁纸,往上是应用窗口,再往上是状态栏、通知这些系统层。应用只要拿到了「显示在其他应用上层」的授权,就能把自己的一个窗口画到绝大多数应用之上——聊天软件的悬浮头像、视频画中画、游戏加速器的悬浮球,走的都是同一条路。

这款准星工具的准星图形,就是这样一个永远浮在最上层的窗口:游戏在前台渲染它的画面,准星窗口叠在游戏窗口之上,看起来就像准星「长」在了游戏里。

为什么必须开权限

没有悬浮窗授权,系统不允许一个应用画到别的应用上面——这是安卓的安全设计,防止恶意应用盖住支付确认框之类的关键界面伪造点击。所以第一次打开准星工具时,它会引导你去系统设置里授权。各品牌手机的授权入口路径不一样,整理在各品牌手机悬浮权限入口路径。

这套机制带来三个特点