FloatingX

FloatingX 是一个灵活且强大的 Android 悬浮窗解决方案框架,支持系统级悬浮窗、应用内悬浮窗和局部悬浮窗三种模式。该技能指导 AI 编码智能体正确集成和使用 FloatingX 库,涵盖 Gradle 依赖配置、Builder API、控制接口、监听器、JetPack Compose 支持及常见开发模式,帮助开发者快速实现悬浮窗功能。

支持的悬浮窗类型

类型 枚举值 权限要求 实现方案 适用场景
应用内浮窗 FxScopeType.APP 插入 DecorView 仅在 App 内显示,最简单
系统级浮窗 FxScopeType.SYSTEM SYSTEM_ALERT_WINDOW WindowManager 跨 App 全局显示,如悬浮球、通知栏浮窗
自动降级浮窗 FxScopeType.SYSTEM_AUTO 可选 优先 System,无权限降级为 App 兼容性最佳方案
局部浮窗 FxScopeHelper 指定 ViewGroup / Fragment / Activity 局限于特定页面区域

核心能力

  1. JetPack Compose 支持 — 通过 enableComposeSupport() 启用,系统级浮窗可渲染 Compose 内容
  2. 浮窗半隐藏模式 — 拖至边缘自动半隐,可配置隐藏比例(0~0.9)
  3. 自定义显示/隐藏动画 — 继承 FxAnimation 实现 fromAnimator()toAnimator()
  4. 多指触摸 — 精准决策触摸手势,支持事件拦截
  5. 位置持久化 — 通过 IFxConfigStorage 接口保存/恢复浮窗历史位置
  6. 越界回弹 + 边缘吸附 — 支持 configurable 吸附方向(上下左右组合)
  7. 黑名单/白名单 — 指定页面禁止或允许显示浮窗
  8. 多浮窗管理 — 通过 setTag() 区分不同浮窗,支持同时管理多个
  9. 权限拦截器 — 自定义系统悬浮窗权限请求流程,支持降级策略
  10. 安全区域 — 避免浮窗覆盖状态栏和导航栏
  11. 键盘适配 — System 浮窗支持键盘弹出/关闭自适应

API 架构

入口点

  • 全局浮窗: FloatingX.install {} (Kotlin DSL) 或 FloatingX.install(AppHelper) (Java)
  • 局部浮窗: FxScopeHelper.builder().build().toControl(activity/fragment/viewGroup)createFx {} 委托
### 通用配置项(20+)


| 类别     | 方法                                                     | 说明                             |
| -------- | -------------------------------------------------------- | -------------------------------- |
| 布局     | `setLayout(layoutId)` / `setLayoutView(view)`            | 设置浮窗内容                     |
| 位置     | `setGravity(FxGravity)`                                  | 9 种预设位置                     |
| 偏移     | `setOffsetXY(x, y)`                                      | 基于 Gravity 的相对偏移          |
| 显示模式 | `setDisplayMode(FxDisplayMode)`                          | Normal / ClickOnly / DisplayOnly |
| 边缘吸附 | `setEnableEdgeAdsorption()` + `setEdgeAdsorbDirection()` | 6 种吸附方向                     |
| 越界回弹 | `setEnableScrollOutsideScreen()`                         | 允许拖出屏幕边界                 |
| 边距     | `setBorderMargin(t, l, b, r)`                            | 限制可移动区域                   |
| 动画     | `setEnableAnimation()` + `setAnimationImpl()`            | 自定义进出动画                   |
| 半隐藏   | `setEnableHalfHide()` + `setHalfHidePercent()`           | 边缘半隐模式                     |
| 点击     | `setOnClickListener(time, listener)`                     | 带防抖点击                       |
| 长按     | `setOnLongClickListener(listener)`                       | 长按事件                         |
| 触摸     | `setTouchListener(IFxTouchListener)`                     | 手势监听                         |
| 生命周期 | `addViewLifecycle(IFxViewLifecycle)`                     | 视图创建/附着/分离回调           |
| 位置存储 | `setSaveDirectionImpl(IFxConfigStorage)`                 | 持久化浮窗位置                   |
| 日志     | `setEnableLog(true, tag)`                                | 调试日志                         |

### 控制接口

```kotlin
// 基础控制 (IFxControl)
control.show()                    // 显示
control.hide()                    // 隐藏(保留绑定)
control.cancel()                  // 移除并释放
control.move(x, y)                // 移动到指定位置
control.moveByVector(dx, dy)      // 向量移动
control.updateView(layoutId)      // 替换浮窗内容
control.getView()                 // 获取内容 View
control.getViewHolder()           // 获取 ViewHolder

// 运行时配置 (IFxConfigControl)
control.configControl.setDisplayMode(FxDisplayMode.ClickOnly)
control.configControl.setEnableAnimation(true)
control.configControl.setEnableEdgeAdsorption(false)
control.configControl.setBorderMargin(100f, 100f, 100f, 100f)
control.configControl.clearLocationStorage()

Gradle 集成

dependencies {
    implementation 'io.github.petterpx:floatingx:2.3.7'
    // Compose 支持系统级浮窗(可选)
    implementation 'io.github.petterpx:floatingx-compose:2.3.7'
}

AndroidManifest(仅 System 级需要)

<uses-permission android:name="android.permission.SYSTEM_ALERT_WINDOW" />
<uses-permission android:name="android.permission.SYSTEM_OVERLAY_WINDOW" />

v2.3.7 2026-08-03
下载