Skip to content
petterp edited this page Aug 30, 2026 · 2 revisions

Demo

The app module in the repository is a full sample and regression harness: one page per capability, one page per historical issue. Install it and click through them.

Running it

git clone https://github.com/Petterpx/FloatingX.git
cd FloatingX
./gradlew app:installDebug        # install the demo
adb logcat | grep "Fx-"           # watch the log

There is a log only if the config called enableLog(tag) (the demo uses Fx-demo); without it the library is completely silent. None of the demo Activities declare configChanges, so rotation goes through recreate — which is exactly what makes "the window is still there afterwards" verifiable.

Capability pages

Page Content
AppHostActivity App-level window: anchor / margin / overflow / safeArea / adsorption / content / animation / attachedActivity
SystemHostActivity System window: the three permission strategies, layoutParams customisation, retryPermission, keyboard / back key, install from a foreground Service
ScopeHostActivity The three local hosts: ViewGroup / Activity / Fragment
GestureActivity Drag mode / drag region / child priority / pass-through / callback log
LayoutActivity Anchor / overflow / adsorption / content size / position persistence
MultiWindowActivity Multiple windows by tag, controls(), reinstalling over a tag
ModalActivity Modal touch interception, dismiss on outside touch, a window above a Dialog
ComposeActivity / ComposeSecondActivity Compose window: viewModel() / rememberSaveable / stateFlow / positionFlow / across pages
SecondActivity Page change: the container is moved silently, state and position do not restart
BlackActivity Blacklisted page (the window disappears)
ImmersedActivity Immersive page (edge-to-edge, no status bar) for safeArea

Regression pages

Named after the issue; each one covers a historical problem 3.0 fixed. See Issue Coverage for the full matrix.

Page Issue
Issue187Activity #187 anchor stays put when the content resizes
Issue210Activity #210 Compose window survives page changes
Issue221Activity #221 blacklist hits subclasses
Issue240Activity #240 no clipping when overflowing
Issue244Activity #244 window inside a Fragment

How the code is organised

Every global window is installed in one place, demo/DemoWindows.kt, and the page buttons only operate on FxControl — so if you want a working install config to copy, that file is all you need. The Java sample lives in demo/java/JavaDemo.java: the three buttons in the "Java" group on the home page map to its three methods, writing all three kinds of window with Java builders to keep the public API Java-friendly.


Start at Getting Started, see the issue matrix in Issue Coverage, or go back to Home.

Clone this wiki locally