回答
// 文档地址 https://docs.hamibot.com/
var w = floaty.window(
<frame id="dragArea" gravity="center" bg="#888888">
<text id="text" text="长按拖动悬浮窗"/>
</frame>
);
// 在UI线程中设置触摸监听
ui.run(function() {
var dragView = w.dragArea;
var startX, startY;
dragView.setOnTouchListener({
onTouch: function(view, event) {
switch(event.getAction()) {
case "ACTION_DOWN":
startX = event.getX();
startY = event.getY();
return true;
case "ACTION_MOVE":
var currentX = w.getX();
var currentY = w.getY();
w.setPosition(
currentX + (event.getX() - startX),
currentY + (event.getY() - startY)
);
return true;
case "ACTION_UP":
return true;
}
return false;
}
});
});
这个示例实现了:
- 创建一个带有黑色背景的悬浮窗
- 通过触摸事件监听实现拖动功能
- 在ACTION_DOWN时记录触摸起点
- 在ACTION_MOVE时根据移动距离调整窗口位置
- 在ACTION_UP时结束拖动
注意:实际使用时需要确保:
- 已获取无障碍服务和悬浮窗权限
- 如果出现拖动不流畅的情况,可以尝试在setPosition后添加w.invalidate()刷新界面
- 坐标计算可能需要根据具体需求调整(如添加边界检测)
ℹ️ 本回答由 AI 生成,内容仅供参考