Skip to content
Crease
Esc
↑↓navigate↵open⌘Jpreview
On this page

Types

HingeStatus, Hinge, FoldOrientation, Fold, Posture, FoldState and TwoPaneFallback.

All types live in the package com.jantursky.crease. The generated API docs are on javadoc.io.

Hinge, Fold and FoldState are plain classes, not data classes, so the library can add to them without breaking binary compatibility. They implement equals, hashCode and toString.

HingeStatus

public enum class HingeStatus { Closed, PartiallyOpen, FullyOpen }

How far the hinge is open, as the platform reports it.

Hinge

public class Hinge(public val status: HingeStatus, public val angle: Float?)
Property Type Description
status HingeStatus Whether the hinge is shut, half open or fully open.
angle Float? Degrees: 0 when shut, 180 when flat. null when the device has no angle sensor.

FoldOrientation

public enum class FoldOrientation { Vertical, Horizontal }

A vertical fold splits the window into a left and a right half. A horizontal fold splits it into a top and a bottom half.

Fold

public class Fold(
    public val bounds: Rect,
    public val orientation: FoldOrientation,
    public val isSeparating: Boolean,
    public val isOccluding: Boolean,
)
Property Type Description
bounds Rect The fold in window coordinates, in pixels. A seamless panel reports zero width.
orientation FoldOrientation Direction of the fold line.
isSeparating Boolean Content should stay on one side: the device is half open, or there is a physical gap.
isOccluding Boolean The fold hides what is drawn beneath it.

Posture

public enum class Posture { Closed, Flat, Book, Tabletop }
Value Meaning
Closed The hinge is shut.
Flat A phone, a desktop window, or a foldable lying open.
Book Half open with a vertical fold, held like a book.
Tabletop Half open with a horizontal fold, standing like a laptop.

See postures and the hinge for the exact rules.

FoldState

public class FoldState(
    public val hinge: Hinge?,
    public val folds: List<Fold>,
    public val cutouts: List<Rect>,
)
Property Type Description
hinge Hinge? null when the device has no hinge or has not reported it yet.
folds List<Fold> Folds across the window, usually zero or one.
cutouts List<Rect> Camera and sensor housings, in window coordinates and pixels.
fold Fold? The first fold, or null.
posture Posture The current posture.

Factories

Factory Parameters Description
FoldState.None none No hinge, no folds, no cutouts.
FoldState.closed() none A foldable that is shut.
FoldState.flat(windowSize, orientation, foldWidth) Size, FoldOrientation = Vertical, Float = 0f A foldable lying open.
FoldState.book(windowSize, angle, foldWidth) Size, Float = 90f, Float = 0f Half open, vertical fold in the middle.
FoldState.tabletop(windowSize, angle, foldWidth) Size, Float = 90f, Float = 0f Half open, horizontal fold in the middle.

windowSize and foldWidth are in pixels, angle in degrees.

TwoPaneFallback

public enum class TwoPaneFallback { FirstOnly, SideBySide, Stacked }
Value Description
FirstOnly Only the first pane.
SideBySide Both panes in a row, half each.
Stacked Both panes in a column, half each.

Last updated on

Was this page helpful?