回答
要在应用页面内用图片替换某一部分,并让图片跟随页面滑动,可以利用 Hamibot 的悬浮窗功能,动态绑定目标控件的位置。核心思路是:
- 创建一个透明悬浮窗,在其中放置替换图片。
- 循环获取目标控件在屏幕上的坐标与尺寸。
- 实时将悬浮窗移动到该控件的位置,覆盖原内容。
- 当页面滑动时,控件位置变化,悬浮窗会同步跟随,实现“图片随滑动移动”的效果。
下面是一个可直接运行的脚本模板,兼容 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 生成,可能不准确,请注意核实