
核心是三件事:让窗口透明(去掉背景)、让窗口置顶(不被其他窗口盖住)、让鼠标点击穿透(点它后面的东西不被挡住)。安卓与 Windows 都提供了对应能力,差别在于「能否真正贴在桌面底层」——多数实现其实是「置顶的透明窗口」。
Windows 上通过分层窗口(WS_EX_LAYERED)实现逐像素透明。这决定了宠物边缘是否干净——如果不做逐像素,就会出现一圈白边或黑边。
| 能力 | 作用 | 不做会怎样 |
|---|---|---|
| 逐像素透明 | 边缘干净 | 出现白边 / 黑框 |
| 窗口置顶 | 不被遮挡 | 一切窗口就看不见 |
| 点击穿透 | 不挡操作 | 点不到后面的图标 |
| 区域命中测试 | 精细交互 | 边缘误触 |
第一种是「永远置顶」,宠物会浮在所有窗口之上,包括全屏视频;第二种是「贴在桌面层」,只在看到桌面时出现,被其他窗口盖住时隐藏。前者存在感强但打扰,后者安静但容易被忘记。
宠物占据的矩形区域如果不可穿透,用户点它后面的图标就会点到宠物。规范做法是对宠物身体做命中测试,身体之外的部分点击穿透。
因为它是普通窗口程序。规范做法是隐藏任务栏图标、只保留托盘图标或不保留。
取决于实现。置顶式的不会,桌面层式的会——后者更接近「贴在壁纸上」的感觉。