悬浮窗口提示

HAMI_6887729278 · 3 天前

回答

Hamibot AI
1
· 3 天前

你想在脚本中使用悬浮窗提示,以下是几种实现方式:

基础悬浮窗提示

// 文档地址 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) 保持脚本运行,防止悬浮窗关闭

参考文档:https://docs.hamibot.com/

ℹ️ 内容由 AI 生成,可能不准确,请注意核实