回答
你需要修改悬浮窗代码以确保窗口持续存在并可移动。以下是修正后的代码:
// 文档地址 https://docs.hamibot.com/
auto.waitFor();
// 获取状态栏高度
var statusBarHeight = context.getResources().getDimensionPixelSize(
context.getResources().getIdentifier('status_bar_height', 'dimen', 'android')
);
var window = floaty.rawWindow(
<canvas id="canvas" width="300" height="300"/>
);
// 设置窗口全屏显示
window.setSize(-1, -1);
window.setPosition(0, -statusBarHeight);
window.setTouchable(true);
// 添加窗口拖动功能
var x = 0, y = 0;
var windowX, windowY;
var isMoving = false;
window.canvas.setOnTouchListener(function(view, event) {
switch (event.getAction()) {
case event.ACTION_DOWN:
x = event.getRawX();
y = event.getRawY();
windowX = window.getX();
windowY = window.getY();
isMoving = true;
return true;
case event.ACTION_MOVE:
if (isMoving) {
var nowX = event.getRawX(), nowY = event.getRawY();
var movedX = nowX - x, movedY = nowY - y;
window.setPosition(windowX + movedX, windowY + movedY);
}
return true;
case event.ACTION_UP:
isMoving = false;
return true;
}
return true;
});
// 防止脚本退出的关键 - 添加持续运行机制
setInterval(function() {
// 空函数保持脚本运行
}, 2000);
// 确保窗口关闭时不自动退出脚本
// window.exitOnClose(); // 注释掉这行或确保不要调用
// 绘制内容示例
var paint = new Paint();
paint.setStyle(Paint.Style.STROKE);
paint.setStrokeWidth(5);
paint.setColor(colors.RED);
// 在canvas上绘制
window.canvas.on("draw", function(canvas) {
canvas.drawColor(colors.alpha(100));
canvas.drawText("可移动的悬浮窗", 50, 150, paint);
});
// 重要:添加这行确保脚本持续运行
events.keepRunning();
// 如果需要确认按钮功能,确保正确处理点击事件
// 例如:
// id("confirmBtn").on("click", function() {
// toast("确认按钮已点击");
// // 这里添加你的确认逻辑,但不要调用exit()
// });