tommybuonomo/dotsindicator
68.3
Adequate · 28 September 2026
2.3k
lines of production code
Kotlin
primary language
2
measurements over time
What this system is
This system is an Android library that provides animated dot indicators for pager views, supporting both legacy XML-based ViewPager implementations and modern Jetpack Compose. It offers four distinct animation styles—Shift, Spring, Worm, and Balloon—and includes features like RTL layout support and configurable dot clickability. The project also maintains a sample application to demonstrate integration with ViewPager, ViewPager2, and Compose.
How it got here
2017 — Jetpack Compose migration and rebranding
3 changes.
The project was rebranded to Pager Dots Indicator and updated to version 5.1.1 to support Jetpack Compose alongside classic XML views. Legacy components and obsolete test stubs were removed to streamline the codebase and align with the new API structure.
2018 — Build system migration and RTL support
4 changes.
The project migrated its build configuration from Groovy to the Gradle Kotlin DSL and upgraded the Gradle wrapper. It also enhanced the DotsIndicator component to support right-to-left layouts and configurable dot clickability, while adding standard configuration files to the sample app.
2023–2026 — Compose migration and sample modernization
5 changes.
The sample application was refactored to adopt modern Android development patterns, primarily shifting the default UI to Jetpack Compose with Material 3 theming. This period also involved adding comprehensive ViewPager2 support and updating the Gradle build toolchain to ensure consistent JVM environments across platforms.
Features
Compose sample app demonstrates multiple dot indicator styles
The sample application now includes a Compose-based UI that showcases the library's dot indicator capabilities, specifically featuring Shift, Spring, Worm, and Balloon indicator types. This new fragment allows users to interact with a HorizontalPager and observe how each indicator type animates and renders in real-time, providing a visual reference for integrating these specific styles into their own Jetpack Compose projects.
viewpagerdotsindicator-sample/src/main/kotlin/com/tbuonomo/dotsindicatorsample/ui/compose · high confidence
Sample app adds ViewPager2 support alongside existing ViewPager implementation
The sample application now includes a dedicated ViewPager2 demonstration in addition to the existing ViewPager one. This new section features a fragment that integrates the dots, spring dots, and worm dots indicators with a ViewPager2 instance, utilizing a custom RecyclerView adapter and a zoom-out page transformer. It also includes debug-mode controls for dynamically adding and removing items to test indicator updates.
viewpagerdotsindicator-sample/src/main/kotlin/com/tbuonomo/dotsindicatorsample/ui/viewpager, viewpagerdotsindicator-sample/src/main/kotlin/com/tbuonomo/dotsindicatorsample/ui/viewpager2 · high confidence
Removals
Removal of legacy DotsIndicator component
The legacy \DotsIndicator\ class has been removed from the library. This component previously provided a basic dot-based indicator for ViewPager with static styling and manual width adjustments during page scrolling. Users relying on this specific implementation will need to migrate to the updated indicator components introduced in this release.
src/main/java · high confidence
Behavioural changes
Added sample project configuration files
The sample application now includes a .gitignore file to exclude build artifacts and IDE settings, and a proguard-rules.pro file to provide default configuration rules for code shrinking and obfuscation.
viewpagerdotsindicator-sample · high confidence
DotsIndicator now supports RTL layouts and configurable dot clickability
The DotsIndicator component now correctly handles right-to-left (RTL) layouts by forcing LTR layout direction on individual dot views, preventing visual inversion in RTL languages. Additionally, the indicator now respects a new \dotsClickable\ attribute (defaulting to true), allowing developers to disable user interaction with individual dots via XML or code.
viewpagerdotsindicator/src · high confidence
Library renamed to Pager Dots Indicator with Jetpack Compose support
The project has been rebranded from 'Material Squares Loading Animation' to 'Pager Dots Indicator' and updated to version 5.1.1. The library now supports Jetpack Compose alongside classic XML views, offering four indicator types: Shift, Spring, Worm, and Balloon. The Maven artifact has changed to com.tbuonomo:dotsindicator, and the README has been completely rewritten to document the new Compose API and XML attributes.
(repo-wide) · high confidence
Migrate build scripts to Gradle Kotlin DSL
The project's build configuration has been migrated from Groovy to Kotlin DSL (build.gradle.kts). This change updates the build system syntax, which may require users to adjust their local build environment or custom build scripts to support the new format. Additionally, a .gitignore file has been added to the module to standardize ignored build artifacts and IDE files.
viewpagerdotsindicator · high confidence
Sample app adopts View Binding and Jetpack Compose theming
The sample application's core module has been refactored to support modern Android development patterns. It introduces Kotlin delegates for View Binding in Activities and Fragments to simplify view access and memory management. Additionally, it establishes a Jetpack Compose foundation by defining Material 3 color palettes for both light and dark modes, with the sample app currently configured to always use the dark theme. A ZoomOutPageTransformer is also included to provide a specific visual effect for ViewPager transitions.
viewpagerdotsindicator-sample/src/main/kotlin/com/tbuonomo/dotsindicatorsample/core · high confidence
Sample app defaults to Compose-based indicator display
The sample application's main activity now loads the Compose-based dots indicator fragment by default, replacing the previous default behavior of showing the ViewPager or ViewPager2 implementations. Users launching the sample will immediately see the Jetpack Compose version of the indicator, while the legacy ViewPager and ViewPager2 fragments remain available as selectable alternatives within the same activity.
viewpagerdotsindicator-sample/src/main/kotlin/com/tbuonomo/dotsindicatorsample/ui · high confidence
Updated Gradle Daemon JVM toolchain configuration
The Gradle build now includes a generated \gradle-daemon-jvm.properties\ file that configures the JVM toolchain for the Gradle daemon. This file maps specific operating systems (FreeBSD, Linux, macOS, Windows) and architectures (AARCH64, X86\_64) to specific JDK distribution URLs via the Foojay Disco API, and sets the target JDK version to 21. This ensures consistent and reproducible JVM environments for the Gradle daemon across different developer machines and CI systems.
gradle · high confidence
Test coverage
Removal of legacy Android test stubs
The legacy Android instrumentation test (ApplicationTest) and the basic unit test stub (ExampleUnitTest) have been removed from the project. These files were standard boilerplate generated by older Android tooling and their deletion indicates a cleanup of obsolete test infrastructure.
src/androidTest, src/test · high confidence
Dependencies
Upgrade Gradle wrapper to version 9.5.1
The project's Gradle wrapper has been updated to use Gradle 9.5.1. This ensures that builds are executed with the specified distribution version, replacing any previous wrapper configuration.
gradle/wrapper · high confidence
Written by watchdog.canine.dev from the codebase's own history, inside the signed delivery this page is composed from.
How this codebase got here
Score
- CAI 69 → 68 (-0.2)
- Rubric changed (rubric-2026.09.8 → rubric-2026.09.16) — scores are not directly comparable.
Lenses
- Code Health 99 → 99 (+0.0)
- Architecture 100 → 97 (-2.9)
- Maturity 61 → 61 (+0.0)
- Readiness 74 → 74 (+0.0)
- Security 65 → 65 (+0.0)
Resolved (1)
- Documentation: no installation or build instructions (README.md)
New (1)
- Off the main sequence: :viewpagerdotsindicator
Written by watchdog.canine.dev from the codebase's own history, inside the signed delivery this page is composed from.
Survey your own repository
tommybuonomo/dotsindicator was measured the same way every project in this corpus was: the same rubric, at a pinned commit, with the result published in full. Point a surveyor at a repository you know and see whether you agree with it.
About this page
- The score is its most recent published measurement, taken on 28 September 2026 at a pinned commit. It is not a live figure and does not change until the project is measured again.
- Measured at commit 6ac14908b89129ff786ec11ac2eb056992f054ed — the exact code this score is about.
- Scored under rubric-2026.09.16 — the same rubric and the same method as every other entry in this index.
- Measured by watchdog.canine.dev using codehealth-analyzer preprod-2d9048c36d26.