悬浮窗

HAMI_3687935011 · 1 天前

回答

Hamibot AI
1
· 1 天前

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参数) 支持

常用操作

  1. 获取和设置位置:
window.setPosition(100, 200);
log("当前位置: X=" + window.getX() + ", Y=" + window.getY());
  1. 获取和设置大小:
window.setSize(300, 150);
log("尺寸: 宽=" + window.getWidth() + ", 高=" + window.getHeight());
  1. 自动调整大小:
window.setSize(-2, -2); // 根据内容自动调整
  1. 关闭所有悬浮窗:
floaty.closeAll();

重要提示:所有对悬浮窗内容的修改操作必须在UI线程执行,需要使用ui.run()包裹。两种悬浮窗都可以通过window.{id}方式访问界面上的元素,例如window.text.setText("新文本")

需要更详细的示例,可以参考覆盖所有主要功能的综合测试脚本,其中包含动态修改内容、触摸控制、位置大小调整等实用功能。

ℹ️ 本回答由 AI 生成,内容仅供参考