回答
Hamibot的悬浮窗功能通过floaty模块实现,提供了两种主要的悬浮窗创建方式:
基础悬浮窗 (floaty.window)
创建带有调整按钮的悬浮窗,自带关闭、调整大小和位置功能
// 文档地址 https://docs.hamibot.com/
var window = floaty.window(
<frame gravity="center" bg="#FF0000">
<text id="text">悬浮文字</text>
</frame>
);
// 5秒后关闭
setTimeout(function() {
window.close();
}, 5000);
// 动态修改内容需要在UI线程执行
ui.run(function() {
window.text.setText("新文本");
});
原始悬浮窗 (floaty.rawWindow)
创建无额外控件的悬浮窗,支持全屏显示并可覆盖状态栏
var rawWindow = floaty.rawWindow(
<frame gravity="center" bg="#00FF00">
<text id="text">原始悬浮窗</text>
</frame>
);
rawWindow.setPosition(300, 300); // 设置位置
rawWindow.setSize(200, 100); // 设置大小
rawWindow.setTouchable(false); // 设置不可触摸
主要功能对比
| 特性 | 基础悬浮窗 | 原始悬浮窗 |
|---|---|---|
| 控制按钮 | 自带关闭、调整大小按钮 | 无额外按钮 |
| 全屏支持 | 不支持 | 支持覆盖状态栏 |
| 触摸事件 | 可接收 | 可通过setTouchable控制 |
| 自动调整大小 | 支持(-2参数) | 支持 |
常用操作
- 获取和设置位置:
window.setPosition(100, 200);
log("当前位置: X=" + window.getX() + ", Y=" + window.getY());
- 获取和设置大小:
window.setSize(300, 150);
log("尺寸: 宽=" + window.getWidth() + ", 高=" + window.getHeight());
- 自动调整大小:
window.setSize(-2, -2); // 根据内容自动调整
- 关闭所有悬浮窗:
floaty.closeAll();
重要提示:所有对悬浮窗内容的修改操作必须在UI线程执行,需要使用ui.run()包裹。两种悬浮窗都可以通过window.{id}方式访问界面上的元素,例如window.text.setText("新文本")。
需要更详细的示例,可以参考覆盖所有主要功能的综合测试脚本,其中包含动态修改内容、触摸控制、位置大小调整等实用功能。
ℹ️ 本回答由 AI 生成,内容仅供参考