Skip to content
CAI
Software that uses CAICheck a score

JessYanCoding/AndroidAutoSize

61.3

Adequate · 25 September 2026

4k

lines of production code

Java

primary language

5

measurements over time

CAI band scale
CAI trend line
CAI lens gauges

What this system is

AndroidAutoSize is an Android library that provides automatic screen adaptation for UI components. It allows developers to customize how Activities and Fragments scale across different screen sizes, with support for alternative layout units like mm and pt. The system offers granular control over adaptation behavior, including per-component overrides and third-party activity support, while also providing utility classes for screen metrics and build configuration.

Features

Add AndroidX demo application

A new demo application for AndroidX has been added to the project. This includes the main activity, a custom adapt activity, a fragment host, and three custom fragments, all demonstrating the AndroidAutoSize library's capabilities with AndroidX components. The demo also includes the necessary layout files, resources, and an instrumented test.

demo-androidx · high confidence

Add interfaces to disable or customize screen adaptation

The AndroidAutoSize library now provides two new internal interfaces, CancelAdapt and CustomAdapt, allowing developers to control screen adaptation on a per-Activity basis. Implementing CancelAdapt disables all adaptation effects for a specific page, while implementing CustomAdapt allows that page to define its own width/height-based scaling and design dimensions, overriding the global default settings.

autosize/src/main/java/me/jessyan/autosize/internal · high confidence

Add subunits demo for alternative screen adaptation units

A new 'demo-subunits' module has been added to demonstrate the use of alternative screen adaptation units (specifically 'mm') via the AndroidAutoSize framework. This includes a base Application class that configures the framework to support the 'mm' subunit, a main activity with layouts using 'mm' units, and a custom activity implementing the CustomAdapt interface to show how to define specific design dimensions. The demo also includes standard Android resources, test files, and configuration files.

demo-subunits · high confidence

Add support for customizing screen adaptation of third-party library activities

Introduced ExternalAdaptInfo and ExternalAdaptManager to allow developers to specify custom screen adaptation parameters for third-party library activities. This enables precise control over how external activities are scaled, addressing cases where global adaptation settings are insufficient or incompatible with third-party UI designs.

autosize/src/main/java/me/jessyan/autosize/external · high confidence

Add support for pt, in, and mm as secondary layout units

The autosize library now supports pt, in, and mm as secondary units for layout, allowing developers to use these less common units to avoid side effects from modifying the system's density. The new Subunits enum and UnitsManager class provide configuration options to enable or disable support for dp, sp, and the new secondary units, giving users more flexibility in how they define their design dimensions.

autosize/src/main/java/me/jessyan/autosize/unit · high confidence

Demo app adds multi-window, custom activity/fragment adaptation, and external library support

The demo application now includes a new BaseApplication that initializes AndroidAutoSize with a adapt listener and configures external third-party activities (like DefaultErrorActivity) for screen adaptation. New components are added: CustomAdaptActivity, which demonstrates custom width/height-based adaptation using iPhone design dimensions; FragmentHost and three custom Fragments (CustomFragment1, 2, 3) that show how to apply specific adaptation parameters to fragments; and updates to MainActivity to navigate to these new screens and demonstrate stopping/restarting the auto-size engine. This provides a complete example of how to handle multi-window support, custom adaptation for activities and fragments, and adapting third-party library activities.

demo/src/main/java · high confidence

Introduce pluggable screen adaptation strategy and lifecycle callbacks

The library now supports a pluggable screen adaptation strategy via the new \AutoAdaptStrategy\ interface and its default implementation \DefaultAutoAdaptStrategy\. This allows developers to customize how screen adaptation is applied to Activities and Fragments. The \ActivityLifecycleCallbacksImpl\ and \FragmentLifecycleCallbacksImpl\ classes are introduced to automatically apply the adaptation strategy during the lifecycle of Activities and Fragments, reducing boilerplate code. Additionally, a \WrapperAutoAdaptStrategy\ and \onAdaptListener\ are added to provide before/after hooks for adaptation events.

autosize/src/main/java/me/jessyan/autosize · high confidence

Behavioural changes

Added ProGuard keep rules for autosize

The autosize module now includes ProGuard rules to preserve the \me.jessyan.autosize\ classes and interfaces, ensuring they are not obfuscated or removed during the build process.

autosize · medium confidence

New utility classes for screen metrics and preconditions

The autosize library introduces new utility classes in the utils package: AutoSizeLog, AutoSizeUtils, Preconditions, and ScreenUtils. AutoSizeLog replaces the previous LogUtils to avoid naming conflicts. AutoSizeUtils provides conversion methods for dp, sp, pt, in, and mm to pixels, along with a method to retrieve the Application instance. ScreenUtils offers methods to get status bar height, screen dimensions, and navigation bar height. Preconditions adds standard validation methods like checkNotNull and checkState.

autosize/src/main/java/me/jessyan/autosize/utils · high confidence

Upgrade Gradle wrapper to version 5.4.1

The Gradle wrapper has been upgraded from version 4.4 to 5.4.1. This update ensures that the project uses a newer, more stable version of the Gradle build tool, which may include performance improvements, bug fixes, and new features available in the 5.x release line.

gradle · high confidence

Dependencies

Upgrade Gradle and Android SDK to support AndroidX and modern build tools

The project has been upgraded to use Gradle 3.5.3 and Android SDK 29 (Build Tools 29.0.2). This update introduces a new AndroidX-based demo module (demo-androidx) alongside the existing Support library-based demos, enabling developers to test the library against modern AndroidX dependencies. The root build configuration now centrally manages version numbers and dependencies, including AppCompat for both Support and AndroidX, while also adding the customactivityoncrash library to the main demo.

(dependencies) · medium 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 59 → 61 (+2.1)
  • Rubric changed (rubric-2026.08.19 → rubric-2026.09.15) — scores are not directly comparable.

Lenses

  • Code Health 95 → 96 (+1.6)
  • Architecture 100 → 100 (-0.1)
  • Maturity 49 → 49 (+0.0)
  • Readiness 44 → 48 (+4.0)
  • Security 100 → 100 (+0.0)

Resolved (15)

  • Coverage not included — suite not readable by the collector
  • Dependency hygiene not measured — dependency manifest found but not parsed for hygiene
  • Duplicated block (11 lines × 4) (autosize/src/main/java/me/jessyan/autosize/AutoSize.java)
  • Duplicated block (12 lines × 2) (autosize/src/main/java/me/jessyan/autosize/AutoSize.java)
  • Duplicated block (12 lines × 2) (autosize/src/main/java/me/jessyan/autosize/AutoSize.java)
  • Duplicated block (14 lines × 2) (autosize/src/main/java/me/jessyan/autosize/AutoSize.java)
  • Duplicated block (38 lines × 2) (demo-androidx/src/main/java/me/jessyan/autosize/demo/androidx/BaseApplication.java)
  • Duplicated block (5 lines × 2) (autosize/src/main/java/me/jessyan/autosize/utils/Preconditions.java)
  • Duplicated block (5 lines × 2) (demo-androidx/src/main/java/me/jessyan/autosize/demo/androidx/FragmentHost.java)
  • Duplicated block (7 lines × 2) (autosize/src/main/java/me/jessyan/autosize/AutoSize.java)
  • Duplicated block (8 lines × 2) (autosize/src/main/java/me/jessyan/autosize/AutoSize.java)
  • Duplicated block (9 lines × 2) (demo-androidx/src/main/java/me/jessyan/autosize/demo/androidx/CustomFragment1.java)
  • No exposed public API
  • Test reliability not included
  • dormant codebase — no living knowledge left to concentrate

New (20)

  • Dependency hygiene PARTLY measured — Maven/Gradle declarations read, no dependency graph resolved
  • Documentation: no installation or build instructions (README.md)
  • Duplicated block (12 lines × 2) (demo-androidx/src/main/java/me/jessyan/autosize/demo/androidx/CustomFragment1.java)
  • Duplicated block (13 lines × 4) (autosize/src/main/java/me/jessyan/autosize/AutoSize.java)
  • Duplicated block (19 lines × 2) (autosize/src/main/java/me/jessyan/autosize/AutoSize.java)
  • Duplicated block (19 lines × 2) (autosize/src/main/java/me/jessyan/autosize/FragmentLifecycleCallbacksImpl.java)
  • Duplicated block (22 lines × 2) (autosize/src/main/java/me/jessyan/autosize/AutoSize.java)
  • Duplicated block (48 lines × 2) (autosize/src/main/java/me/jessyan/autosize/AutoSize.java)
  • Duplicated block (5 lines × 2) (autosize/src/main/java/me/jessyan/autosize/utils/Preconditions.java)
  • Duplicated block (55 lines × 2) (demo-androidx/src/main/java/me/jessyan/autosize/demo/androidx/FragmentHost.java)
  • Duplicated block (56 lines × 4) (demo-androidx/src/main/java/me/jessyan/autosize/demo/androidx/CustomFragment2.java)
  • Duplicated block (61–63 lines × 2) (demo-androidx/src/main/java/me/jessyan/autosize/demo/androidx/BaseApplication.java)
  • Duplicated block (65 lines × 3) (demo-androidx/src/main/java/me/jessyan/autosize/demo/androidx/CustomAdaptActivity.java)
  • Duplicated block (7 lines × 2) (autosize/src/main/java/me/jessyan/autosize/AutoSize.java)
  • Duplicated block (82 lines × 2) (demo-androidx/src/main/java/me/jessyan/autosize/demo/androidx/CustomAdaptActivity.java)
  • Duplicated block (9 lines × 2) (autosize/src/main/java/me/jessyan/autosize/AutoSize.java)
  • Duplicated block (9 lines × 2) (autosize/src/main/java/me/jessyan/autosize/AutoSize.java)
  • Duplicated block (9 lines × 2) (autosize/src/main/java/me/jessyan/autosize/AutoSize.java)
  • Members sharing a duplicated core (4 members, 50+ identical tokens) (autosize/src/main/java/me/jessyan/autosize/AutoSize.java)
  • No dependency advisory monitoring

Written by watchdog.canine.dev from the codebase's own history, inside the signed delivery this page is composed from.

Survey your own repository

JessYanCoding/AndroidAutoSize 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 25 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 e402ecdd998ea07549513ac08c12e9f097f3b48c — the exact code this score is about.
  • Scored under rubric-2026.09.15 — the same rubric and the same method as every other entry in this index.
  • Measured by watchdog.canine.dev using codehealth-analyzer preprod-f917f263222d.