Skip to content

Commit

Permalink
Keyboard (IME) animation support (#142)
Browse files Browse the repository at this point in the history
* Initial sample for IME Animations

* Initial support for WindowInsetsAnimations

* Add new imePadding() and navigationBarsWithImePadding()

* Improve visuals of the sample

* Tidy up updating of insets

* Optimize navigationBarsWithImePadding()

Currently we create a new Modifier instance on each
inset value change since we compute a new insets inside of
composed { }, which isn't ideal. Instead, we have now moved
the computation within the layout block, which means only the
layout block will be restarted on composition changes.

* Add fast-path for coerceEachDimensionAtLeast()

* Extract WindowInsetsAnimations impl to class

Also added a enable/disable flag to ProvideWindowInsets

* Extract IME Animation support to new functions

These are now behind an experimental flag

* Add animation support for remaining Insets types
  • Loading branch information
chrisbanes committed Dec 2, 2020
1 parent 8807fc8 commit cc0b94c
Show file tree
Hide file tree
Showing 9 changed files with 548 additions and 79 deletions.
25 changes: 18 additions & 7 deletions .idea/codeStyles/Project.xml

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

12 changes: 12 additions & 0 deletions insets/api/insets.api
Original file line number Diff line number Diff line change
@@ -1,14 +1,17 @@
public final class dev/chrisbanes/accompanist/insets/ComposeInsets {
public static final fun ProvideWindowInsets (ZLkotlin/jvm/functions/Function2;Landroidx/compose/runtime/Composer;II)V
public static final fun ProvideWindowInsets (ZZLkotlin/jvm/functions/Function2;Landroidx/compose/runtime/Composer;II)V
public static final fun add-L4cKpv0 (Landroidx/compose/foundation/layout/PaddingValues;FFFF)Landroidx/compose/foundation/layout/PaddingValues;
public static final fun add-L4cKpv0$default (Landroidx/compose/foundation/layout/PaddingValues;FFFFILjava/lang/Object;)Landroidx/compose/foundation/layout/PaddingValues;
public static final fun getAmbientWindowInsets ()Landroidx/compose/runtime/ProvidableAmbient;
public static final fun imePadding (Landroidx/compose/ui/Modifier;)Landroidx/compose/ui/Modifier;
public static final fun navigationBarsHeight-wxomhCo (Landroidx/compose/ui/Modifier;F)Landroidx/compose/ui/Modifier;
public static final fun navigationBarsHeight-wxomhCo$default (Landroidx/compose/ui/Modifier;FILjava/lang/Object;)Landroidx/compose/ui/Modifier;
public static final fun navigationBarsPadding (Landroidx/compose/ui/Modifier;ZZZ)Landroidx/compose/ui/Modifier;
public static final fun navigationBarsPadding$default (Landroidx/compose/ui/Modifier;ZZZILjava/lang/Object;)Landroidx/compose/ui/Modifier;
public static final fun navigationBarsWidth-UTaBBDU (Landroidx/compose/ui/Modifier;Ldev/chrisbanes/accompanist/insets/HorizontalSide;F)Landroidx/compose/ui/Modifier;
public static final fun navigationBarsWidth-UTaBBDU$default (Landroidx/compose/ui/Modifier;Ldev/chrisbanes/accompanist/insets/HorizontalSide;FILjava/lang/Object;)Landroidx/compose/ui/Modifier;
public static final fun navigationBarsWithImePadding (Landroidx/compose/ui/Modifier;)Landroidx/compose/ui/Modifier;
public static final fun statusBarsHeight-wxomhCo (Landroidx/compose/ui/Modifier;F)Landroidx/compose/ui/Modifier;
public static final fun statusBarsHeight-wxomhCo$default (Landroidx/compose/ui/Modifier;FILjava/lang/Object;)Landroidx/compose/ui/Modifier;
public static final fun statusBarsPadding (Landroidx/compose/ui/Modifier;)Landroidx/compose/ui/Modifier;
Expand All @@ -17,6 +20,9 @@ public final class dev/chrisbanes/accompanist/insets/ComposeInsets {
public static final fun toPaddingValues (Ldev/chrisbanes/accompanist/insets/Insets;ZZZZLandroidx/compose/runtime/Composer;II)Landroidx/compose/foundation/layout/PaddingValues;
}

public abstract interface annotation class dev/chrisbanes/accompanist/insets/ExperimentalAnimatedInsets : java/lang/annotation/Annotation {
}

public final class dev/chrisbanes/accompanist/insets/HorizontalSide : java/lang/Enum {
public static final field Left Ldev/chrisbanes/accompanist/insets/HorizontalSide;
public static final field Right Ldev/chrisbanes/accompanist/insets/HorizontalSide;
Expand All @@ -26,11 +32,15 @@ public final class dev/chrisbanes/accompanist/insets/HorizontalSide : java/lang/

public final class dev/chrisbanes/accompanist/insets/Insets {
public fun <init> ()V
public final fun copy (IIIIZ)Ldev/chrisbanes/accompanist/insets/Insets;
public static synthetic fun copy$default (Ldev/chrisbanes/accompanist/insets/Insets;IIIIZILjava/lang/Object;)Ldev/chrisbanes/accompanist/insets/Insets;
public final fun getBottom ()I
public final fun getLeft ()I
public final fun getRight ()I
public final fun getTop ()I
public final fun isVisible ()Z
public final fun minus (Ldev/chrisbanes/accompanist/insets/Insets;)Ldev/chrisbanes/accompanist/insets/Insets;
public final fun plus (Ldev/chrisbanes/accompanist/insets/Insets;)Ldev/chrisbanes/accompanist/insets/Insets;
}

public final class dev/chrisbanes/accompanist/insets/VerticalSide : java/lang/Enum {
Expand All @@ -45,7 +55,9 @@ public final class dev/chrisbanes/accompanist/insets/ViewWindowInsetObserver {
public fun <init> (Landroid/view/View;)V
public final fun isObserving ()Z
public final fun start (Z)Ldev/chrisbanes/accompanist/insets/WindowInsets;
public final fun start (ZZ)Ldev/chrisbanes/accompanist/insets/WindowInsets;
public static synthetic fun start$default (Ldev/chrisbanes/accompanist/insets/ViewWindowInsetObserver;ZILjava/lang/Object;)Ldev/chrisbanes/accompanist/insets/WindowInsets;
public static synthetic fun start$default (Ldev/chrisbanes/accompanist/insets/ViewWindowInsetObserver;ZZILjava/lang/Object;)Ldev/chrisbanes/accompanist/insets/WindowInsets;
public final fun stop ()V
}

Expand Down
Loading

0 comments on commit cc0b94c

Please sign in to comment.