回答
// 文档地址 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 生成,内容仅供参考