← All projects
022026

Folio

A local PDF reader for Android that reads like an e-book reader.

Source ↗Download APK ↗

Three screens of the Folio app: the library cover grid, and the reader with its controls in sepia and dark themes
Library, then the reader in sepia and dark. Release build on a Samsung Galaxy A35.
Overview

Folio is a PDF reader built around reading rather than file management. The page fills the screen, the controls stay out of the way until you tap the centre, and tapping the edges turns the page. Position is saved on every page turn, so a document reopens where you stopped, even after a force stop or a reboot.

It is local by design: no store, no account, no ads, no analytics, and reading works offline. The only network feature is an optional web search that loads Google or DuckDuckGo in a WebView. The app never reads or scrapes the results - it only catches a tap on a PDF link, and the page gets no access to files or app code. A downloaded file opens as a preview and enters the library only when you add it.

Rendering uses the framework PdfRenderer, so there is no native library in the APK and no licence baggage. Memory is kept in check deliberately: only the visible page and its neighbours are rendered, a rendered page is capped at 8 million pixels, and the bitmap cache is an LRU bounded by bytes. That holds up on 600-page and 914-page books.

Highlights
  • 01Full-screen reader with page-turn and vertical scroll modes, pinch and double-tap zoom up to 4x
  • 02Reading position saved on every page turn; survives app and device restart
  • 03Light, sepia and dark themes, bookmarks, page scrubber, reader-only brightness
  • 04Web search runs in a sandboxed WebView; downloads stay in cache until added to the library
  • 05Single activity, Compose and MVVM with no dependency injection framework - about 3 MB signed release, built by CI on every tag
Stack
  • Kotlin
  • Jetpack Compose
  • Room
  • Android
Discussion
  • Loading…