Skip to content

Demo 说明

petterp edited this page Aug 30, 2026 · 1 revision

Demo

仓库里的 app 模块是一个完整的示例与回归工程: 每种能力一页、每个历史 issue 一页,装上就能逐条对着点。

运行

git clone https://github.com/Petterpx/FloatingX.git
cd FloatingX
./gradlew app:installDebug        # 安装 demo
adb logcat | grep "Fx-"           # 看运行日志

日志只有在配置里调过 enableLog(tag) 才会有(demo 用的是 Fx-demo),不调用则完全静默。 demo 的 Activity 一律不配 configChanges,旋转走 recreate,方便验证「重建后浮窗还在」。

能力页

页面 内容
AppHostActivity App 级全局浮窗:锚点 / margin / 越界 / safeArea / 吸附 / 内容 / 动画 / attachedActivity
SystemHostActivity 系统浮窗:三种权限策略、layoutParams 定制、retryPermission、键盘 / 返回键、前台 Service 安装
ScopeHostActivity 局部浮窗三种宿主:ViewGroup / Activity / Fragment
GestureActivity 拖动模式 / 起拖区域 / 子 view 优先级 / 透传 / 回调日志
LayoutActivity 锚点 / 越界 / 吸附 / 内容尺寸 / 位置持久化
MultiWindowActivity 按 tag 管理多浮窗、controls()、同 tag 重装
ModalActivity modal 拦截外部触摸、点外部自动 hide、Dialog 之上的浮窗
ComposeActivity / ComposeSecondActivity Compose 浮窗:viewModel() / rememberSaveable / stateFlow / positionFlow / 跨页
SecondActivity 换页观察:容器被静默挪到新页,状态与位置都不重来
BlackActivity 黑名单页(浮窗消失)
ImmersedActivity 沉浸页(edge-to-edge + 无状态栏),验证 safeArea

回归页

按 issue 编号命名,每页对应一个 3.0 修掉的历史问题,对照见 Issue 覆盖矩阵

页面 issue
Issue187Activity #187 内容尺寸变化时锚点不动
Issue210Activity #210 Compose 浮窗跨页存活
Issue221Activity #221 黑名单命中子类
Issue240Activity #240 越界不被裁剪
Issue244Activity #244 Fragment 内浮窗

代码怎么组织的

全局浮窗集中在 demo/DemoWindows.kt 安装,页面按钮只操作 FxControl—— 所以想抄一份可用的 install 配置,看这个文件就够了。 Java 样例在 demo/java/JavaDemo.java:主页「Java」分组里的三个按钮对应它的三个方法, 用 Java Builder 把 App 级 / 系统级 / 局部三种浮窗各写一遍,验证公开 API 的 Java 友好度。


上手请看 快速开始,历史 issue 对照见 Issue 覆盖矩阵,返回 Home

Clone this wiki locally