回答
你想在脚本中使用悬浮窗提示,以下是几种实现方式:
基础悬浮窗提示
// 文档地址 https://docs.hamibot.com/
// 简单提示(自动消失)
toast("操作成功");
// 带日志的提示
toastLog("开始执行任务");
// 长时间显示
toast("加载中...", true); // 第二个参数true表示长时间显示
自定义悬浮窗
// 文档地址 https://docs.hamibot.com/
// 创建可拖动的悬浮窗
var w = floaty.rawWindow(
<frame gravity="center" bg="#aa000000">
<text id="text" text="准备就绪" textColor="#ffffff" textSize="16sp" padding="16"/>
</frame>
);
// 设置位置
w.setPosition(100, 300);
// 设置可触摸(可拖动)
w.setTouchable(true);
// 更新内容
function updateStatus(msg) {
ui.run(function() {
w.text.setText(msg);
});
}
// 使用示例
updateStatus("正在查找联系人...");
sleep(2000);
updateStatus("找到联系人,点击中...");
sleep(2000);
updateStatus("发送消息成功");
// 5秒后关闭
setTimeout(function() {
w.close();
}, 5000);
// 保持脚本运行
setInterval(function() {}, 1000);
带进度显示的悬浮窗
// 文档地址 https://docs.hamibot.com/
var window = floaty.rawWindow(
<vertical bg="#e6000000" padding="16" cornerRadius="8">
<text id="title" text="订单通知助手" textColor="#4CAF50" textSize="14sp" gravity="center"/>
<text id="status" text="初始化..." textColor="#ffffff" textSize="12sp" marginTop="8"/>
<text id="detail" text="" textColor="#aaaaaa" textSize="10sp" marginTop="4"/>
<progressbar id="progress" style="@style/Widget.AppCompat.ProgressBar.Horizontal" marginTop="8"/>
</vertical>
);
window.setSize(-2, -2);
window.setPosition(device.width / 2 - 200, 100);
function showProgress(title, status, percent) {
ui.run(function() {
window.title.setText(title);
window.status.setText(status);
window.detail.setText(percent + "%");
window.progress.setProgress(percent);
});
}
// 使用
showProgress("发送消息", "正在打开微信...", 10);
sleep(1000);
showProgress("发送消息", "查找联系人...", 40);
sleep(1000);
showProgress("发送消息", "输入消息内容...", 70);
sleep(1000);
showProgress("发送消息", "发送完成", 100);
setTimeout(function() {
window.close();
}, 3000);
setInterval(function() {}, 1000);
调试专用:显示所有 env 参数
// 文档地址 https://docs.hamibot.com/
var debugWindow = floaty.rawWindow(
<vertical bg="#cc000000" padding="12" maxWidth="300">
<text text="调试信息" textColor="#4CAF50" textSize="14sp" gravity="center"/>
<text id="content" text="加载中..." textColor="#ffffff" textSize="10sp" marginTop="8"/>
</vertical>
);
debugWindow.setSize(-2, -2);
debugWindow.setPosition(50, 200);
function showDebugInfo() {
var info = [];
info.push("time: " + new Date().toLocaleString());
if (typeof hamibot !== "undefined" && hamibot.env) {
for (var key in hamibot.env) {
info.push(key + ": " + hamibot.env[key]);
}
} else {
info.push("hamibot.env: 不可用");
}
ui.run(function() {
debugWindow.content.setText(info.join("\n"));
});
}
showDebugInfo();
// 保持显示
setInterval(function() {}, 1000);
关键要点
| 函数 | 用途 |
|---|---|
toast() |
简单提示,自动消失 |
toastLog() |
提示+日志记录 |
floaty.rawWindow() |
自定义悬浮窗 |
ui.run() |
在UI线程更新内容 |
setInterval(()=>{},1000) |
保持脚本运行,防止悬浮窗关闭 |
ℹ️ 内容由 AI 生成,可能不准确,请注意核实