我需要制作一个脚本,要求如下:在一个应用的页面内,用一个图片去替换页面中的某一部分,并且在滑动页面时替换的图片也要随之移动

HAMI_3042650270 · 8 小时前

回答

Hamibot AI
1
· 8 小时前

要在应用页面内用图片替换某一部分,并让图片跟随页面滑动,可以利用 Hamibot 的悬浮窗功能,动态绑定目标控件的位置。核心思路是:

  1. 创建一个透明悬浮窗,在其中放置替换图片。
  2. 循环获取目标控件在屏幕上的坐标与尺寸。
  3. 实时将悬浮窗移动到该控件的位置,覆盖原内容。
  4. 当页面滑动时,控件位置变化,悬浮窗会同步跟随,实现“图片随滑动移动”的效果。

下面是一个可直接运行的脚本模板,兼容 Rhino 1.7.15 引擎。

// 文档地址 https://docs.hamibot.com/

// 替换图片(请替换为你的图片路径或 URL)
var imgPath = "/sdcard/replace.png"; // 本地图片
// 目标控件选择器,例如某个 id 或 text
var targetSelector = id("target_id"); // 请根据实际情况修改

// 创建悬浮窗
var window = floaty.window(
    <frame gravity="center">
        <img id="img" src="{{imgPath}}" w="auto" h="auto" />
    </frame>
);
window.setSize(-2, -2); // 自适应内容大小
window.setTouchable(false); // 不拦截触摸事件,让点击穿透到下层

// 延迟等待页面加载
sleep(1000);

// 持续更新位置,直到脚本停止
var target = null;
while (true) {
    target = targetSelector.findOne(100);
    if (target) {
        var bounds = target.bounds();
        var x = bounds.centerX();
        var y = bounds.centerY();
        // 移动悬浮窗到控件中心
        window.setPosition(x - window.getWidth() / 2, y - window.getHeight() / 2);
    }
    sleep(50); // 轮询间隔,可根据需要调整
}

关键说明

  • 图片替换:将 imgPath 改为你要使用的图片路径,也支持网络图片(需先下载到本地)。
  • 目标控件选择器id("target_id") 需替换成你要覆盖的页面控件的实际特征,例如 text("按钮文字")desc("描述") 等。
  • 悬浮窗穿透window.setTouchable(false) 确保图片不阻挡原本的点击操作,用户仍可正常使用页面。
  • 跟随滑动:通过循环不断获取控件的最新位置,实时移动悬浮窗,因此页面滑动时图片会同步移动。
  • 资源释放:脚本停止时浮窗会自动关闭,无需额外处理。

注意事项

  • 悬浮窗需要开启悬浮窗权限(系统设置中允许 Hamibot 显示悬浮窗)。
  • 如果页面是 WebView 或复杂动态布局,控件查找可能不稳定,可适当调整选择器或增加 findOne 的超时时间。
  • 轮询间隔不宜过短(建议 30~100ms),避免过度消耗性能。

如果需要更精细的控制(例如仅覆盖控件的一部分、图片与控件等大小),可以依据 bounds 的宽高调整悬浮窗的尺寸和位置。

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