ScrollIt is a Kotlin Android app for internal use on Samsung phones. It provides:
- Main app screen for permission setup and advanced tuning.
- Floating overlay for runtime control of downward auto-scroll in other apps.
ScrollIt can now be downloaded directly from GitHub Releases.
- Current stable release: ScrollIt v1.0.0
- Direct APK download: scrollit-v1.0.0-debug.apk
- Published: August 12, 2026
- Package: debug-signed APK for direct testing outside Google Play
- Offers two separate scroll modes:
- Touch is the default. It uses Android Accessibility and works without Shizuku.
- AutoScroll uses Shizuku to hold one system-level touch and move it every 16 ms. This gives Android apps a continuous scroll stream similar to Windows middle-click scrolling.
- Shows only the permissions required by the selected mode.
- Opens the exact Android settings screens needed to enable permissions.
- Starts a floating, draggable overlay above other apps.
- Keeps the existing Accessibility gesture engine as the simple fallback.
- Uses 30 persistent speed levels, calibrated for slow continuous scrolling.
- Collapses into a small edge bubble and expands back on tap.
- Draw over other apps (
SYSTEM_ALERT_WINDOW) - One scroll backend:
- Touch mode: Accessibility service (ScrollIt Accessibility)
- AutoScroll mode: Shizuku running and ScrollIt authorized
- Foreground service (overlay runs as foreground service)
Touch mode needs no Shizuku. Use the steps below only for AutoScroll. AutoScroll uses a continuous touch stream because many Android apps ignore mouse-wheel events, including Ultimate Guitar Tabs.
- Install Shizuku from the official download page.
- On Android 11 or newer, enable Developer options and Wireless debugging.
- Open Shizuku. Under Start via Wireless debugging, tap Pairing and follow its pairing notification.
- Return to Shizuku and tap Start. The top status must say that Shizuku is running.
- Open ScrollIt and select AutoScroll.
- Under Setup, tap Set up Shizuku and allow ScrollIt in the Shizuku permission dialog.
- Allow Floating controls, open the controls, and press Start.
Non-root Shizuku must be started again after every phone restart. If Shizuku is stopped or access is denied, ScrollIt shows a red message and does not silently switch modes. The official illustrated instructions are in the Shizuku user manual.
Note: this repository uses text-only launcher scripts (
gradlew,gradlew.bat) that call a local Gradle installation.
cd C:\Users\teply\Documents\scrollit
.\gradlew.bat testDebugUnitTest assembleDebug lintDebugcd /workspace/scrollit
./gradlew testDebugUnitTest assembleDebug lintDebug- Relative:
app/build/outputs/apk/debug/app-debug.apk - Example absolute (Linux in this repo):
/workspace/scrollit/app/build/outputs/apk/debug/app-debug.apk - Example absolute (Windows):
C:\Users\teply\Documents\scrollit\app\build\outputs\apk\debug\app-debug.apk
This repository now publishes installable APK files from GitHub tags that start with v.
- GitHub release page: v1.0.0
- Downloaded asset name:
scrollit-v1.0.0-debug.apk - Release channel: stable
- Push the commit to
main - Create a version tag such as
v1.0.1 - Push the tag to GitHub
- GitHub Actions builds the APK and attaches it to the matching release
adb devices
adb install -r C:\Users\teply\Documents\scrollit\app\build\outputs\apk\debug\app-debug.apkSettings→About phone→Software information- Tap Build number 7 times
Settings→Developer options- Enable USB debugging
- Connect USB and confirm RSA key prompt
- Open ScrollIt
- Tap Open overlay permission settings
- Enable Appear on top for ScrollIt
- Open ScrollIt
- Tap Open accessibility settings
Accessibility→Installed apps→ ScrollIt Accessibility- Enable service and confirm warning dialogs
- Open ScrollIt and select Touch or AutoScroll.
- Check that Floating controls and the selected backend are On.
- Choose a speed from
1..30; optionally expand Motion details. - Tap Open controls.
- Drag overlay to desired place.
- Tap Start on a long page.
- Verify the page scrolls downward continuously.
- Tap + and -:
- speed number updates
1..30 - change applies while scrolling is already running
- speed number updates
- Tap Stop and verify scrolling stops immediately.
- Tap Hide and verify the bubble appears on the screen edge.
- Tap the bubble and verify the overlay expands back.
- Tap Exit and verify the overlay and foreground notification close.
- Disable the selected backend and tap Start again. Verify a red error message appears and no fallback starts.
- Some apps/screens ignore injected accessibility gestures.
- AutoScroll uses touch injection because many Android apps ignore mouse-wheel events.
- AutoScroll requires Shizuku because ordinary Android apps cannot inject system input events.
- Gesture behavior differs slightly across One UI versions.
- Exact smoothness depends on app rendering and refresh timing.
connectedDebugAndroidTestneeds emulator or physical device.
app/src/main/java/cz/teply/scrollit/
MainActivity.kt
OverlayService.kt
ShizukuAutoScrollEngine.kt
ShizukuInputUserService.kt
TouchScrollProfileFactory.kt
ScrollAccessibilityService.kt
ScrollSettings.kt
ScrollSettingsStore.kt
ScrollSpeed.kt
app/src/main/res/layout/
activity_main.xml
overlay_controls.xml
overlay_bubble.xml
app/src/main/res/xml/
scroll_accessibility_service.xml
MIT. See LICENSE.