AI summary
Xposed module that renders an animated progress ring around the camera cutout during downloads. v2.4 adds per-element rotation lock, customizable text shadow and outline, Russian translation, and Real HDR brightness toggle for the ring on API 35+. Requires Android 12+, LSPosed, and a punch-hole display.
Generated by AI. May contain inaccuracies.
About this app
Xposed module that displays download progress as an animated ring around the camera cutout.
Features
- Progress ring rendered around the camera cutout using the native DisplayCutout API. - Customizable appearance: colors per state (active/completed/failed), arc thickness, opacity, and direction. - Completion animations and optional haptic feedback. - Active download counter badge. - Battery saver-aware rendering. - Built-in test mode for simulating states. - Material 3 Expressive settings UI with Jetpack Compose.
Requirements
- Android 12 (API 31) or higher. - LSPosed (JingMatrix fork recommended). - Pixel or AOSP-based ROM. - Root access (optional, for Restart SystemUI in settings). - A phone with a punch-hole display.
Installation
1. Download the APK. 2. Install and enable the module in LSPosed. 3. Scope to com.android.systemui. 4. Restart SystemUI or reboot the device.
The app includes a built-in Restart SystemUI option in the overflow menu. Magisk will prompt for permission; KernelSU/APatch require adding the app manually.
License
GNU General Public License v3.0
What's new
- Features
- 3e0abc5 (hook) Per-element rotation lock for overlay items by @hxreborn
- 5b1eabf (ui) Customizable text shadow and outline per element by @hxreborn
- bc18873 (ui) Add Russian translation by @Osean22
- 8c7f6c9 (view) Add toggle for Real HDR brightness for the ring on API 35+ by @hxreborn
- Bug Fixes
- 356195a (build) Drop aboutlibraries plugin and commit pre-generated JSON by @hxreborn
- 19d20cf (hook) Hold strong ref to pref change listener by @hxreborn
- d15db9c (ui) Move slider state sync into LaunchedEffect by @hxreborn
- Performance Improvements 462199b (hook) Cache cancellation reason field in remove path by @hxreborn
- 64ad993 (hook) Cache action field reflection in download path by @hxreborn
- 7d4960d (ui) Mark AppPrefs as @immutable for skipping by @hxreborn
- Refactor
- f520404 (hook) Move pref cache to xposed/hook/IndicatorState by @hxreborn
- ae78229 (prefs) Drop legacy single-rotation offset prefs [breaking] by @hxreborn
- Direct upgrade from <= v1.8.2 resets percent text, filename text and counter calibration.
- 8868ec0 (ui) Drop unused isXposedEnabled stub by @hxreborn
- a4a1efe (ui) Use viewModels delegate for SettingsViewModel by @hxreborn
- 5f43f5f (view) Per-key cache refresh and paint helper extraction by @hxreborn
- c6145d7 Tighten mService visibility, add bind diagnostic by @hxreborn
- e351adc Move PrefsRepository ownership to PHDPApp by @hxreborn
- a51b167 Move PHDPApp service binder fields to instance members by @hxreborn
- 0405327 Implement OnServiceListener directly on PHDPApp by @hxreborn
- c752d9c Drop unused PHDPApp.companion.instance by @hxreborn
- 3107bd7 Rename PrefsState to AppPrefs by @hxreborn
- 48bdaa8 Annotate top-level module var with @PublishedApi by @hxreborn
- 668b747 Rename hook singletons from Hooker to Hook by @hxreborn
- c4d6690 Rename PHDPApp binder handle to mService by @hxreborn
About this version
- Version
- 2.4.0 (24000)
- Size
- 3.22 MB
- Requires Android
- 9.0
- Target SDK
- 28
- Architecture
- armeabi-v7a, x86, x86_64, arm64-v8a
- Downloads
- 27
- Updated
- Jun 10, 2026
- Package
- eu.hxreborn.phdp
Ratings & reviews
- 50
- 40
- 30
- 20
- 10
