let fw = floaty.rawWindow(
<vertical w="300" h="200" bg="#80333333">
<text id="logText" bg="#000000" textColor="#ffffff" textSize="16sp">初始化中...</text>
<com.stardust.autojs.core.console.ConsoleView id="console" />
</vertical>
);
// 设置文本控件的字体大小
ui.run(function() {
fw.logText.setTextSize(20); // 设置字体大小为20sp
});
// 将自定义控制台与运行时控制台关联
fw.console.setConsole(runtime.console);
// 隐藏悬浮窗中的确认按钮
ui.run(function() {
fw.console.findViewById(com.stardust.autojs.R.id.input_container).visibility = android.view.View.GONE;
});
// 模拟实时输出日志信息
function logMessage(message) {
ui.run(function() {
fw.logText.setText(message);
fw.console.log(message);
});
}
// 保持脚本运行,防止悬浮窗关闭
setInterval(() => {}, 1000);
是否可以创建一个独立的线程来维持悬浮窗的打开,然后其他线程执行任务时输出信息到这个控制台打印出来。
回答
可以创建一个独立的线程来维持悬浮窗的打开,并在其他线程中执行任务时将信息输出到这个控制台。以下是一个示例代码,展示了如何实现这一点:
// 文档地址 https://docs.hamibot.com/
// 创建悬浮窗
let fw = floaty.rawWindow(
<vertical w="300" h="200" bg="#80333333">
<text id="logText" bg="#000000" textColor="#ffffff" textSize="16sp">初始化中...</text>
<com.stardust.autojs.core.console.ConsoleView id="console" />
</vertical>
);
// 设置文本控件的字体大小
ui.run(function() {
fw.logText.setTextSize(20); // 设置字体大小为20sp
});
// 将自定义控制台与运行时控制台关联
fw.console.setConsole(runtime.console);
// 隐藏悬浮窗中的确认按钮
ui.run(function() {
fw.console.findViewById(com.stardust.autojs.R.id.input_container).visibility = android.view.View.GONE;
});
// 模拟实时输出日志信息
function logMessage(message) {
ui.run(function() {
fw.logText.setText(message);
fw.console.log(message);
});
}
// 创建一个独立的线程来维持悬浮窗的打开
thread.start(function() {
// 保持脚本运行,防止悬浮窗关闭
while (true) {
sleep(1000);
}
});
// 其他线程执行任务时输出信息到控制台
thread.start(function() {
for (let i = 0; i < 10; i++) {
logMessage("任务进度: " + i + "%");
sleep(1000);
}
});