找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
查看: 34|回复: 0

floatUI 悬浮控制台的正确打开方式(别再弹日志窗了)

[复制链接]

2

主题

0

回帖

8

积分

软件网站新手

积分
8
发表于 1 小时前 | 显示全部楼层 |阅读模式
很多新手喜欢用 `logWindow.show()` 弹个悬浮日志窗看运行状态,结果屏幕上飘一块白底方块,又卡又丑。AIWROK 的 `floatUI` 才是正确的可视化方案:用原生控件搭一个带背景、能拖动、能按钮控制的小控制台。


根布局必须铺背景

floatUI 窗口默认是白底。如果根布局不设 `android:background`,只要窗口被较宽的子控件(比如 200dp 面板)撑开,而窄的子控件没占满,就会露一大块白。给根布局铺上和面板同款深色即可解决:

  1. var ui = new floatUI();
  2. ui.loadXML(
  3.     '<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" '
  4.   + 'android:orientation="vertical" android:background="#222831" '
  5.   + 'android:layout_width="wrap_content" android:layout_height="wrap_content">'
  6.   + '<TextView android:id="log" android:text="等待中" '
  7.   + 'android:textColor="#eeeeee" android:textSize="14sp"/></LinearLayout>'
  8. );
  9. var log = ui.findViewById("log");
复制代码


只认原生控件名

这是最容易踩的坑:`loadXML` 只认原生 Android 控件类名。写 `<root>`、`<vertical>`、`<frame>`、`<text>` 全都会报 `ClassNotFoundException`。一律用 `<LinearLayout>`、`<FrameLayout>`、`<TextView>`、`<Button>`,`android:id` 也不要写 `@+id`,直接 `android:id="log"`。


按钮控制线程池

控制台最大的价值是能随时暂停/继续/停止。按钮回调本身跑在 UI 线程,直接操作控件是安全的:

  1. var btn = ui.findViewById("stop");
  2. btn.setOnClickListener(function() {
  3.     pool.stop();
  4.     log.setText("已停止");
  5.     ui.close();
  6. });
复制代码

关闭窗口一定要用实例的 `ui.close()`,不是 `new floatUI().closeAll()`——后者关的是 window 主窗口框架,关不掉你建的浮窗。稳妥起见再补一条 `try { window.closeAll() } catch (e) {}` 兜底。


拖动要用全类名

真机实测:短类名 `View`、`MotionEvent` 不是全局可用的,写 `new View.OnTouchListener` 会直接走 catch。先 `importClass(android.view.View)` 和 `importClass(android.view.MotionEvent)`,或用全类名。标题栏绑定 `OnTouchListener`,用 `e.getRawX()/getRawY()` 算位移就能拖动。


隐藏系统浮标

AIWROK 自带那个圆形 A 球浮标,正式跑脚本时可以用 `new floatUI().hideSystemFloat()` 藏起来,结束再 `showSystemFloat()`。


相关阅读


  • 短信验证码中心AIWROK万能调用端
  • clickPercent天然适配不同分辨率找控件点击
  • floatUI深色控制台风格悬浮窗日志
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

Archiver|手机版|小黑屋|

GMT+8, 2026-10-21 17:21

安卓脚本软件 · 键鼠盒子 · HID · 机械臂

快速回复 返回顶部 返回列表

随机阅读 · 更多好帖