Skip to content

Adaptive utilities for Jetpack Compose

Maven Central

A library providing a collection of utilities for adaptive layouts.

calculateDisplayFeatures

calculateDisplayFeatures(activity) returns the current list of DisplayFeatures, as reported by the Jetpack WindowManager library.

These contain the list of folds (if any), and can be used to drive components like TwoPane.

TwoPane

TwoPane is a UI component that positions exactly two slots on the screen.

The default positioning of these two slots is driven by a TwoPaneStrategy, which can decide to orient the two slots side-by-side horizontally or vertically, and also configure the gap between them.

The built-in HorizontalTwoPaneStrategy and VerticalTwoPaneStrategy allow positioning the slots based on a fixed offset, or as some fraction of the space.

TwoPane also requires a list of display features (to be retrieved with calculateDisplayFeatures), and optionally a FoldAwareConfiguration to determine which folds to handle automatically.

When there is a fold that intersects with the TwoPane component that is obscuring or separating, the TwoPane will automatically place the slots to avoid the fold.

When there is no fold, the default supplied strategy will be used instead.

FoldAwareColumn

FoldAwareColumn is a simplified version of Column that places children in a fold-aware manner.

FoldAwareColumn requires a list of display features (to be retrieved with calculateDisplayFeatures) to determine which folds to handle automatically.

The built-in foldPadding parameter is zero, and the values of the vertical padding are used in the layout determine how much space should be left around a fold when placing children.

When there is a horizontal fold that is obscuring or separating, the layout will begin placing children from the top of the available space. If a child is projected to overlap the fold, then its y-coordinate is increased so it will be placed fully below the fold, as will any other remaining children.

When there is no fold, the children will be placed consecutively with no y-coordinate adjustments.

Optionally, children can be modified with the ignoreFold() attribute, which means that they will be placed as if no fold is present even if they overlap a fold.

Download

Maven Central

repositories {
    mavenCentral()
}

dependencies {
    implementation "com.google.accompanist:accompanist-adaptive:<version>"
}