我正在写一个可拖动的半透明悬浮窗按钮,能否帮我写出这套按钮的代码?
我需要它有交互效果,按钮就只有一个,未点击的时候显示的是“启动”,按钮的上方需要显示一串标题“PPTM”,启动以后会垂直向下弹出三个按钮,分别是暂停,关闭,配置,我需要他是可拖动的,脚本启动时它会出现在屏幕右侧。

已存档
LiGo · 1 个月前
第 1 条补充
·
1 个月前

为什么我点击就闪退,而且拖动不了

第 2 条补充
·
1 个月前

专业版怎么获得

回答

Hamibot AI
1
· 1 个月前

文档地址 https://docs.hamibot.com/

以下是符合需求的悬浮窗按钮实现代码:

var floatyWin = floaty.window(
  <vertical bg="#88ffffff" padding="8" id="root">
    <text id="title" text="PPTM" textSize="20sp" gravity="center"/>
    <button id="startBtn" text="启动" margin="8"/>
    <vertical id="actions" visibility="gone">
      <button id="pauseBtn" text="暂停"/>
      <button id="configBtn" text="配置"/>
      <button id="exitBtn" text="关闭"/>
    </vertical>
  </vertical>,
  {
    movable: true
  }
);

// 定位到屏幕右侧
setTimeout(function() {
  var screenWidth = device.width;
  floatyWin.setPosition(screenWidth - floatyWin.getWidth(), 100);
}, 100);

// 按钮交互逻辑
floatyWin.startBtn.click(function() {
  var isVisible = floatyWin.actions.getVisibility() == "visible";
  floatyWin.actions.setVisibility(isVisible ? "gone" : "visible");
});

floatyWin.pauseBtn.click(function() {
  toast("暂停功能");
});

floatyWin.configBtn.click(function() {
  toast("配置功能");
});

floatyWin.exitBtn.click(function() {
  floatyWin.close();
});

setInterval(function(){}, 1000);

主要特性说明:

  1. 可拖动悬浮窗:通过movable: true参数实现全局拖动
  2. 半透明效果:使用bg="#88ffffff"设置50%透明度背景
  3. 动态展开:点击"启动"按钮后,下方按钮通过setVisibility切换可见性
  4. 屏幕定位:通过setPosition将悬浮窗固定在右侧(需等待UI渲染完成)
  5. 交互反馈:各按钮点击事件已预留回调函数

注意:此代码使用传统函数表达式编写,确保兼容Rhino 1.7.15引擎。运行后悬浮窗会显示在屏幕右侧,点击"启动"按钮会展开操作面板,支持拖动和基础点击交互。


补充回答 1

文档地址 https://docs.hamibot.com/

请检查以下三项关键配置:

  1. 悬浮窗权限配置
// 必须请求悬浮窗权限
auto.waitFor();

在脚本开头添加该语句,确保已申请悬浮窗权限

  1. 完整代码验证
var floatyWin = floaty.window(
  <vertical bg="#88ffffff" padding="8" id="root">
    <text id="title" text="PPTM" textSize="20sp" gravity="center"/>
    <button id="startBtn" text="启动" margin="8"/>
    <vertical id="actions" visibility="gone">
      <button id="pauseBtn" text="暂停"/>
      <button id="configBtn" text="配置"/>
      <button id="exitBtn" text="关闭"/>
    </vertical>
  </vertical>,
  {
    movable: true,
    width: -2, // WRAP_CONTENT
    height: -2 // WRAP_CONTENT
  }
);

// 定位到屏幕右侧
setTimeout(function() {
  var screenWidth = device.width;
  floatyWin.setPosition(screenWidth - floatyWin.getWidth(), 100);
}, 100);

// 事件绑定优化
floatyWin.startBtn.click(function() {
  var isVisible = floatyWin.actions.getVisibility() == "visible";
  floatyWin.actions.setVisibility(isVisible ? "gone" : "visible");
});

// 基础事件处理
floatyWin.pauseBtn.click(function() {
  toast("暂停");
});

floatyWin.configBtn.click(function() {
  toast("配置");
});

floatyWin.exitBtn.click(function() {
  floatyWin.close();
});

// 保持运行
setInterval(function(){}, 1000);
  1. 常见问题排查
  • 确保设备已开启无障碍服务
  • 确认使用 Hamibot 专业版(普通版不支持复杂悬浮窗)
  • 在脚本管理页面开启【允许显示悬浮窗】权限
  • 在设备设置中授予脚本悬浮窗权限
  • 尝试重启 Hamibot 应用

特别注意:Android 10及以上设备需要开启【特殊悬浮窗权限】,部分厂商(如小米)需在【应用管理】-【权限管理】中单独开启悬浮窗权限


补充回答 2

我已经学习的知识中不包含问题相关内容,暂时无法提供答案。可以发送邮件到 support@hamibot.cn 寻求帮助,如果你有Hamibot产品的其他相关问题,我会帮助你解答。

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