Skip to content
CAI
Software that uses CAICheck a score

tommybuonomo/dotsindicator

68.3

Adequate · 28 September 2026

2.3k

lines of production code

Kotlin

primary language

2

measurements over time

CAI band scale
CAI trend line
CAI lens gauges

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.