Remove animation package from foundation and trasfer default spline based curves to aniamtion module.
Change-Id: I3f7c18be72b1b4e8d7958194b10d63d749f7d948
Relnote: smoothScrollBy and scrollBy methods' packages changed to androidx.compose.foundation.gestures.*
Relnote: android spline based decay curve moved from foundation to animation module
Test: pass + demos
Bug: 175294473
diff --git a/compose/animation/animation-core/samples/src/main/java/androidx/compose/animation/core/samples/AnimatableSamples.kt b/compose/animation/animation-core/samples/src/main/java/androidx/compose/animation/core/samples/AnimatableSamples.kt
index f408987..8138f41 100644
--- a/compose/animation/animation-core/samples/src/main/java/androidx/compose/animation/core/samples/AnimatableSamples.kt
+++ b/compose/animation/animation-core/samples/src/main/java/androidx/compose/animation/core/samples/AnimatableSamples.kt
@@ -25,7 +25,7 @@
import androidx.compose.animation.core.exponentialDecay
import androidx.compose.animation.core.spring
import androidx.compose.animation.core.tween
-import androidx.compose.foundation.animation.androidFlingDecay
+import androidx.compose.animation.splineBasedDecay
import androidx.compose.foundation.background
import androidx.compose.foundation.gestures.awaitFirstDown
import androidx.compose.foundation.gestures.verticalDrag
@@ -123,7 +123,7 @@
val velocity = velocityTracker.calculateVelocity().y
launch {
// Either fling vertically up, or spring back
- val decay = androidFlingDecay<Float>(this@pointerInput)
+ val decay = splineBasedDecay<Float>(this@pointerInput)
// Checks where the animation will end using decay
if (decay.calculateTargetValue(
animatedOffset.value,
diff --git a/compose/animation/animation-core/src/commonMain/kotlin/androidx/compose/animation/core/Animatable.kt b/compose/animation/animation-core/src/commonMain/kotlin/androidx/compose/animation/core/Animatable.kt
index 56962e2..9dd909f 100644
--- a/compose/animation/animation-core/src/commonMain/kotlin/androidx/compose/animation/core/Animatable.kt
+++ b/compose/animation/animation-core/src/commonMain/kotlin/androidx/compose/animation/core/Animatable.kt
@@ -227,8 +227,8 @@
* used after a fling gesture.
*
* [animationSpec] defines the decay animation that will be used for this animation. Some
- * options for this [animationSpec] include: [androidFlingDecay][androidx.compose
- * .foundation.animation.androidFlingDecay] and [exponentialDecay]. [block] will be
+ * options for this [animationSpec] include: [splineBasedDecay][androidx.compose
+ * .animation.splineBasedDecay] and [exponentialDecay]. [block] will be
* invoked on each animation frame.
*
* Returns an [AnimationResult] object, that contains the [reason][AnimationEndReason] for
diff --git a/compose/animation/animation-core/src/commonMain/kotlin/androidx/compose/animation/core/SuspendAnimation.kt b/compose/animation/animation-core/src/commonMain/kotlin/androidx/compose/animation/core/SuspendAnimation.kt
index d092613..58351f1 100644
--- a/compose/animation/animation-core/src/commonMain/kotlin/androidx/compose/animation/core/SuspendAnimation.kt
+++ b/compose/animation/animation-core/src/commonMain/kotlin/androidx/compose/animation/core/SuspendAnimation.kt
@@ -54,8 +54,8 @@
* the velocity reaches 0. This is often used after a fling gesture.
*
* [animationSpec] defines the decay animation that will be used for this animation. Some options
- * for this [animationSpec] include: [androidFlingDecay][androidx.compose.foundation.animation
- * .androidFlingDecay] and [exponentialDecay]. [block] will be invoked on each animation frame
+ * for this [animationSpec] include: [splineBasedDecay][androidx.compose.animation
+ * .splineBasedDecay] and [exponentialDecay]. [block] will be invoked on each animation frame
* with up-to-date value and velocity.
*
* This is a convenient method for decay animation. If there's a need to access more info related to
@@ -160,8 +160,8 @@
* of a fling gesture.
*
* [animationSpec] defines the decay animation that will be used for this animation. Some options
- * for [animationSpec] include: [androidFlingDecay][androidx.compose.foundation.animation
- * .androidFlingDecay] and [exponentialDecay].
+ * for [animationSpec] include: [splineBasedDecay][androidx.compose.animation.splineBasedDecay]
+ * and [exponentialDecay].
*
* During the animation, [block] will be invoked on every frame, and the [AnimationScope] will be
* checked against cancellation before the animation continues. To cancel the animation from the
diff --git a/compose/animation/animation/api/current.txt b/compose/animation/animation/api/current.txt
index 2173100..b18b405 100644
--- a/compose/animation/animation/api/current.txt
+++ b/compose/animation/animation/api/current.txt
@@ -1,6 +1,16 @@
// Signature format: 4.0
package androidx.compose.animation {
+ public final class AndroidActualDefaultDecayAnimationSpec_androidKt {
+ method @androidx.compose.runtime.Composable public static androidx.compose.animation.core.DecayAnimationSpec<java.lang.Float> defaultDecayAnimationSpec();
+ }
+
+ public final class AndroidFlingCalculator_androidKt {
+ }
+
+ public final class AndroidFlingSpline_androidKt {
+ }
+
public final class AnimatedVisibilityKt {
method @androidx.compose.animation.ExperimentalAnimationApi @androidx.compose.runtime.Composable public static void AnimatedVisibility(boolean visible, optional androidx.compose.ui.Modifier modifier, optional androidx.compose.animation.EnterTransition enter, optional androidx.compose.animation.ExitTransition exit, optional boolean initiallyVisible, kotlin.jvm.functions.Function0<kotlin.Unit> content);
method @androidx.compose.animation.ExperimentalAnimationApi @androidx.compose.runtime.Composable public static void AnimatedVisibility(androidx.compose.foundation.layout.RowScope, boolean visible, optional androidx.compose.ui.Modifier modifier, optional androidx.compose.animation.EnterTransition enter, optional androidx.compose.animation.ExitTransition exit, optional boolean initiallyVisible, kotlin.jvm.functions.Function0<kotlin.Unit> content);
@@ -52,6 +62,20 @@
method @androidx.compose.runtime.Composable public static androidx.compose.runtime.State<androidx.compose.ui.graphics.Color> animateColorAsState-m3E411Q(long targetValue, optional androidx.compose.animation.core.AnimationSpec<androidx.compose.ui.graphics.Color> animationSpec, optional kotlin.jvm.functions.Function1<? super androidx.compose.ui.graphics.Color,kotlin.Unit>? finishedListener);
}
+ public final class SplineBasedFloatDecayAnimationSpec implements androidx.compose.animation.core.FloatDecayAnimationSpec {
+ ctor public SplineBasedFloatDecayAnimationSpec(androidx.compose.ui.unit.Density density);
+ method public float getAbsVelocityThreshold();
+ method public long getDurationNanos(float initialValue, float initialVelocity);
+ method public float getTargetValue(float initialValue, float initialVelocity);
+ method public float getValueFromNanos(long playTimeNanos, float initialValue, float initialVelocity);
+ method public float getVelocityFromNanos(long playTimeNanos, float initialValue, float initialVelocity);
+ property public float absVelocityThreshold;
+ }
+
+ public final class SplineBasedFloatDecayAnimationSpec_androidKt {
+ method public static <T> androidx.compose.animation.core.DecayAnimationSpec<T> splineBasedDecay(androidx.compose.ui.unit.Density density);
+ }
+
public final class TransitionKt {
method @androidx.compose.runtime.Composable public static inline <S> androidx.compose.runtime.State<androidx.compose.ui.graphics.Color> animateColor(androidx.compose.animation.core.Transition<S>, optional kotlin.jvm.functions.Function1<? super androidx.compose.animation.core.Transition.Segment<S>,? extends androidx.compose.animation.core.FiniteAnimationSpec<androidx.compose.ui.graphics.Color>> transitionSpec, optional String label, kotlin.jvm.functions.Function1<? super S,androidx.compose.ui.graphics.Color> targetValueByState);
method @androidx.compose.runtime.Composable public static androidx.compose.runtime.State<androidx.compose.ui.graphics.Color> animateColor-Baa6hxQ(androidx.compose.animation.core.InfiniteTransition, long initialValue, long targetValue, androidx.compose.animation.core.InfiniteRepeatableSpec<androidx.compose.ui.graphics.Color> animationSpec);
diff --git a/compose/animation/animation/api/public_plus_experimental_current.txt b/compose/animation/animation/api/public_plus_experimental_current.txt
index 2173100..b18b405 100644
--- a/compose/animation/animation/api/public_plus_experimental_current.txt
+++ b/compose/animation/animation/api/public_plus_experimental_current.txt
@@ -1,6 +1,16 @@
// Signature format: 4.0
package androidx.compose.animation {
+ public final class AndroidActualDefaultDecayAnimationSpec_androidKt {
+ method @androidx.compose.runtime.Composable public static androidx.compose.animation.core.DecayAnimationSpec<java.lang.Float> defaultDecayAnimationSpec();
+ }
+
+ public final class AndroidFlingCalculator_androidKt {
+ }
+
+ public final class AndroidFlingSpline_androidKt {
+ }
+
public final class AnimatedVisibilityKt {
method @androidx.compose.animation.ExperimentalAnimationApi @androidx.compose.runtime.Composable public static void AnimatedVisibility(boolean visible, optional androidx.compose.ui.Modifier modifier, optional androidx.compose.animation.EnterTransition enter, optional androidx.compose.animation.ExitTransition exit, optional boolean initiallyVisible, kotlin.jvm.functions.Function0<kotlin.Unit> content);
method @androidx.compose.animation.ExperimentalAnimationApi @androidx.compose.runtime.Composable public static void AnimatedVisibility(androidx.compose.foundation.layout.RowScope, boolean visible, optional androidx.compose.ui.Modifier modifier, optional androidx.compose.animation.EnterTransition enter, optional androidx.compose.animation.ExitTransition exit, optional boolean initiallyVisible, kotlin.jvm.functions.Function0<kotlin.Unit> content);
@@ -52,6 +62,20 @@
method @androidx.compose.runtime.Composable public static androidx.compose.runtime.State<androidx.compose.ui.graphics.Color> animateColorAsState-m3E411Q(long targetValue, optional androidx.compose.animation.core.AnimationSpec<androidx.compose.ui.graphics.Color> animationSpec, optional kotlin.jvm.functions.Function1<? super androidx.compose.ui.graphics.Color,kotlin.Unit>? finishedListener);
}
+ public final class SplineBasedFloatDecayAnimationSpec implements androidx.compose.animation.core.FloatDecayAnimationSpec {
+ ctor public SplineBasedFloatDecayAnimationSpec(androidx.compose.ui.unit.Density density);
+ method public float getAbsVelocityThreshold();
+ method public long getDurationNanos(float initialValue, float initialVelocity);
+ method public float getTargetValue(float initialValue, float initialVelocity);
+ method public float getValueFromNanos(long playTimeNanos, float initialValue, float initialVelocity);
+ method public float getVelocityFromNanos(long playTimeNanos, float initialValue, float initialVelocity);
+ property public float absVelocityThreshold;
+ }
+
+ public final class SplineBasedFloatDecayAnimationSpec_androidKt {
+ method public static <T> androidx.compose.animation.core.DecayAnimationSpec<T> splineBasedDecay(androidx.compose.ui.unit.Density density);
+ }
+
public final class TransitionKt {
method @androidx.compose.runtime.Composable public static inline <S> androidx.compose.runtime.State<androidx.compose.ui.graphics.Color> animateColor(androidx.compose.animation.core.Transition<S>, optional kotlin.jvm.functions.Function1<? super androidx.compose.animation.core.Transition.Segment<S>,? extends androidx.compose.animation.core.FiniteAnimationSpec<androidx.compose.ui.graphics.Color>> transitionSpec, optional String label, kotlin.jvm.functions.Function1<? super S,androidx.compose.ui.graphics.Color> targetValueByState);
method @androidx.compose.runtime.Composable public static androidx.compose.runtime.State<androidx.compose.ui.graphics.Color> animateColor-Baa6hxQ(androidx.compose.animation.core.InfiniteTransition, long initialValue, long targetValue, androidx.compose.animation.core.InfiniteRepeatableSpec<androidx.compose.ui.graphics.Color> animationSpec);
diff --git a/compose/animation/animation/api/restricted_current.txt b/compose/animation/animation/api/restricted_current.txt
index 2173100..b18b405 100644
--- a/compose/animation/animation/api/restricted_current.txt
+++ b/compose/animation/animation/api/restricted_current.txt
@@ -1,6 +1,16 @@
// Signature format: 4.0
package androidx.compose.animation {
+ public final class AndroidActualDefaultDecayAnimationSpec_androidKt {
+ method @androidx.compose.runtime.Composable public static androidx.compose.animation.core.DecayAnimationSpec<java.lang.Float> defaultDecayAnimationSpec();
+ }
+
+ public final class AndroidFlingCalculator_androidKt {
+ }
+
+ public final class AndroidFlingSpline_androidKt {
+ }
+
public final class AnimatedVisibilityKt {
method @androidx.compose.animation.ExperimentalAnimationApi @androidx.compose.runtime.Composable public static void AnimatedVisibility(boolean visible, optional androidx.compose.ui.Modifier modifier, optional androidx.compose.animation.EnterTransition enter, optional androidx.compose.animation.ExitTransition exit, optional boolean initiallyVisible, kotlin.jvm.functions.Function0<kotlin.Unit> content);
method @androidx.compose.animation.ExperimentalAnimationApi @androidx.compose.runtime.Composable public static void AnimatedVisibility(androidx.compose.foundation.layout.RowScope, boolean visible, optional androidx.compose.ui.Modifier modifier, optional androidx.compose.animation.EnterTransition enter, optional androidx.compose.animation.ExitTransition exit, optional boolean initiallyVisible, kotlin.jvm.functions.Function0<kotlin.Unit> content);
@@ -52,6 +62,20 @@
method @androidx.compose.runtime.Composable public static androidx.compose.runtime.State<androidx.compose.ui.graphics.Color> animateColorAsState-m3E411Q(long targetValue, optional androidx.compose.animation.core.AnimationSpec<androidx.compose.ui.graphics.Color> animationSpec, optional kotlin.jvm.functions.Function1<? super androidx.compose.ui.graphics.Color,kotlin.Unit>? finishedListener);
}
+ public final class SplineBasedFloatDecayAnimationSpec implements androidx.compose.animation.core.FloatDecayAnimationSpec {
+ ctor public SplineBasedFloatDecayAnimationSpec(androidx.compose.ui.unit.Density density);
+ method public float getAbsVelocityThreshold();
+ method public long getDurationNanos(float initialValue, float initialVelocity);
+ method public float getTargetValue(float initialValue, float initialVelocity);
+ method public float getValueFromNanos(long playTimeNanos, float initialValue, float initialVelocity);
+ method public float getVelocityFromNanos(long playTimeNanos, float initialValue, float initialVelocity);
+ property public float absVelocityThreshold;
+ }
+
+ public final class SplineBasedFloatDecayAnimationSpec_androidKt {
+ method public static <T> androidx.compose.animation.core.DecayAnimationSpec<T> splineBasedDecay(androidx.compose.ui.unit.Density density);
+ }
+
public final class TransitionKt {
method @androidx.compose.runtime.Composable public static inline <S> androidx.compose.runtime.State<androidx.compose.ui.graphics.Color> animateColor(androidx.compose.animation.core.Transition<S>, optional kotlin.jvm.functions.Function1<? super androidx.compose.animation.core.Transition.Segment<S>,? extends androidx.compose.animation.core.FiniteAnimationSpec<androidx.compose.ui.graphics.Color>> transitionSpec, optional String label, kotlin.jvm.functions.Function1<? super S,androidx.compose.ui.graphics.Color> targetValueByState);
method @androidx.compose.runtime.Composable public static androidx.compose.runtime.State<androidx.compose.ui.graphics.Color> animateColor-Baa6hxQ(androidx.compose.animation.core.InfiniteTransition, long initialValue, long targetValue, androidx.compose.animation.core.InfiniteRepeatableSpec<androidx.compose.ui.graphics.Color> animationSpec);
diff --git a/compose/animation/animation/build.gradle b/compose/animation/animation/build.gradle
index 4b5cb0d..dd68ba8 100644
--- a/compose/animation/animation/build.gradle
+++ b/compose/animation/animation/build.gradle
@@ -86,6 +86,10 @@
api "androidx.annotation:annotation:1.1.0"
}
+ desktopMain.dependencies {
+ implementation(KOTLIN_STDLIB)
+ }
+
androidTest.dependencies {
implementation(ANDROIDX_TEST_RULES)
implementation(ANDROIDX_TEST_RUNNER)
diff --git a/compose/animation/animation/integration-tests/animation-demos/src/main/java/androidx/compose/animation/demos/SwipeToDismissDemo.kt b/compose/animation/animation/integration-tests/animation-demos/src/main/java/androidx/compose/animation/demos/SwipeToDismissDemo.kt
index efa3219..8e5b752 100644
--- a/compose/animation/animation/integration-tests/animation-demos/src/main/java/androidx/compose/animation/demos/SwipeToDismissDemo.kt
+++ b/compose/animation/animation/integration-tests/animation-demos/src/main/java/androidx/compose/animation/demos/SwipeToDismissDemo.kt
@@ -18,7 +18,7 @@
import androidx.compose.animation.core.Animatable
import androidx.compose.animation.core.calculateTargetValue
-import androidx.compose.foundation.animation.androidFlingDecay
+import androidx.compose.animation.splineBasedDecay
import androidx.compose.foundation.background
import androidx.compose.foundation.gestures.awaitFirstDown
import androidx.compose.foundation.gestures.verticalDrag
@@ -108,7 +108,7 @@
val velocity = velocityTracker.calculateVelocity().y
launch {
// Either fling out of the sight, or snap back
- val decay = androidFlingDecay<Float>(this@pointerInput)
+ val decay = splineBasedDecay<Float>(this@pointerInput)
if (decay.calculateTargetValue(
animatedOffset.value,
velocity
diff --git a/compose/foundation/foundation/src/desktopMain/kotlin/androidx/compose/foundation/animation/DesktopFlingConfig.kt b/compose/animation/animation/src/androidMain/kotlin/androidx/compose/animation/AndroidActualDefaultDecayAnimationSpec.android.kt
similarity index 84%
rename from compose/foundation/foundation/src/desktopMain/kotlin/androidx/compose/foundation/animation/DesktopFlingConfig.kt
rename to compose/animation/animation/src/androidMain/kotlin/androidx/compose/animation/AndroidActualDefaultDecayAnimationSpec.android.kt
index fbb4f8b..204e7a1 100644
--- a/compose/foundation/foundation/src/desktopMain/kotlin/androidx/compose/foundation/animation/DesktopFlingConfig.kt
+++ b/compose/animation/animation/src/androidMain/kotlin/androidx/compose/animation/AndroidActualDefaultDecayAnimationSpec.android.kt
@@ -14,7 +14,7 @@
* limitations under the License.
*/
-package androidx.compose.foundation.animation
+package androidx.compose.animation
import androidx.compose.animation.core.DecayAnimationSpec
import androidx.compose.animation.core.generateDecayAnimationSpec
@@ -23,11 +23,11 @@
import androidx.compose.ui.platform.LocalDensity
@Composable
-internal actual fun rememberActualDecayAnimationSpec(): DecayAnimationSpec<Float> {
+actual fun defaultDecayAnimationSpec(): DecayAnimationSpec<Float> {
// This function will internally update the calculation of fling decay when the density changes,
// but the reference to the returned spec will not change across calls.
val density = LocalDensity.current
return remember(density.density) {
- DesktopFlingDecaySpec(density).generateDecayAnimationSpec()
+ SplineBasedFloatDecayAnimationSpec(density).generateDecayAnimationSpec()
}
}
\ No newline at end of file
diff --git a/compose/foundation/foundation/src/androidMain/kotlin/androidx/compose/foundation/animation/AndroidFlingCalculator.kt b/compose/animation/animation/src/androidMain/kotlin/androidx/compose/animation/AndroidFlingCalculator.android.kt
similarity index 98%
rename from compose/foundation/foundation/src/androidMain/kotlin/androidx/compose/foundation/animation/AndroidFlingCalculator.kt
rename to compose/animation/animation/src/androidMain/kotlin/androidx/compose/animation/AndroidFlingCalculator.android.kt
index 30955a3..b0b18b8 100644
--- a/compose/foundation/foundation/src/androidMain/kotlin/androidx/compose/foundation/animation/AndroidFlingCalculator.kt
+++ b/compose/animation/animation/src/androidMain/kotlin/androidx/compose/animation/AndroidFlingCalculator.android.kt
@@ -14,7 +14,7 @@
* limitations under the License.
*/
-package androidx.compose.foundation.animation
+package androidx.compose.animation
import androidx.compose.ui.unit.Density
import kotlin.math.exp
diff --git a/compose/foundation/foundation/src/androidMain/kotlin/androidx/compose/foundation/animation/AndroidFlingSpline.kt b/compose/animation/animation/src/androidMain/kotlin/androidx/compose/animation/AndroidFlingSpline.android.kt
similarity index 98%
rename from compose/foundation/foundation/src/androidMain/kotlin/androidx/compose/foundation/animation/AndroidFlingSpline.kt
rename to compose/animation/animation/src/androidMain/kotlin/androidx/compose/animation/AndroidFlingSpline.android.kt
index 8b7d69a..d6d9d8c 100644
--- a/compose/foundation/foundation/src/androidMain/kotlin/androidx/compose/foundation/animation/AndroidFlingSpline.kt
+++ b/compose/animation/animation/src/androidMain/kotlin/androidx/compose/animation/AndroidFlingSpline.android.kt
@@ -14,7 +14,7 @@
* limitations under the License.
*/
-package androidx.compose.foundation.animation
+package androidx.compose.animation
import kotlin.math.abs
import kotlin.math.ln
diff --git a/compose/foundation/foundation/src/androidMain/kotlin/androidx/compose/foundation/animation/AndroidFlingDecaySpec.kt b/compose/animation/animation/src/androidMain/kotlin/androidx/compose/animation/SplineBasedFloatDecayAnimationSpec.android.kt
similarity index 89%
rename from compose/foundation/foundation/src/androidMain/kotlin/androidx/compose/foundation/animation/AndroidFlingDecaySpec.kt
rename to compose/animation/animation/src/androidMain/kotlin/androidx/compose/animation/SplineBasedFloatDecayAnimationSpec.android.kt
index d07bf8b..71be999 100644
--- a/compose/foundation/foundation/src/androidMain/kotlin/androidx/compose/foundation/animation/AndroidFlingDecaySpec.kt
+++ b/compose/animation/animation/src/androidMain/kotlin/androidx/compose/animation/SplineBasedFloatDecayAnimationSpec.android.kt
@@ -14,7 +14,7 @@
* limitations under the License.
*/
-package androidx.compose.foundation.animation
+package androidx.compose.animation
import android.view.ViewConfiguration
import androidx.compose.animation.core.DecayAnimationSpec
@@ -28,7 +28,7 @@
*
* @param density density of the display
*/
-class FloatAndroidFlingDecaySpec(density: Density) : FloatDecayAnimationSpec {
+class SplineBasedFloatDecayAnimationSpec(density: Density) : FloatDecayAnimationSpec {
private val flingCalculator = AndroidFlingCalculator(
ViewConfiguration.getScrollFriction(),
@@ -74,5 +74,5 @@
*
* @param density density of the display
*/
-fun <T> androidFlingDecay(density: Density): DecayAnimationSpec<T> =
- FloatAndroidFlingDecaySpec(density).generateDecayAnimationSpec()
\ No newline at end of file
+fun <T> splineBasedDecay(density: Density): DecayAnimationSpec<T> =
+ SplineBasedFloatDecayAnimationSpec(density).generateDecayAnimationSpec()
\ No newline at end of file
diff --git a/compose/animation/animation/src/commonMain/kotlin/androidx/compose/animation/DefaultDecayAnimationSpec.kt b/compose/animation/animation/src/commonMain/kotlin/androidx/compose/animation/DefaultDecayAnimationSpec.kt
new file mode 100644
index 0000000..b4ea195
--- /dev/null
+++ b/compose/animation/animation/src/commonMain/kotlin/androidx/compose/animation/DefaultDecayAnimationSpec.kt
@@ -0,0 +1,26 @@
+/*
+ * Copyright 2021 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package androidx.compose.animation
+
+import androidx.compose.animation.core.DecayAnimationSpec
+import androidx.compose.runtime.Composable
+
+/**
+ * Create default [DecayAnimationSpec] representing a default fling curve for a platform.
+ */
+@Composable
+expect fun defaultDecayAnimationSpec(): DecayAnimationSpec<Float>
\ No newline at end of file
diff --git a/compose/foundation/foundation/src/desktopMain/kotlin/androidx/compose/foundation/animation/AndroidFlingCalculator.kt b/compose/animation/animation/src/desktopMain/kotlin/androidx/compose/animation/AndroidFlingCalculator.desktop.kt
similarity index 97%
rename from compose/foundation/foundation/src/desktopMain/kotlin/androidx/compose/foundation/animation/AndroidFlingCalculator.kt
rename to compose/animation/animation/src/desktopMain/kotlin/androidx/compose/animation/AndroidFlingCalculator.desktop.kt
index 0e51499..28f71ca 100644
--- a/compose/foundation/foundation/src/desktopMain/kotlin/androidx/compose/foundation/animation/AndroidFlingCalculator.kt
+++ b/compose/animation/animation/src/desktopMain/kotlin/androidx/compose/animation/AndroidFlingCalculator.desktop.kt
@@ -14,7 +14,7 @@
* limitations under the License.
*/
-package androidx.compose.foundation.animation
+package androidx.compose.animation
import androidx.compose.ui.platform.LocalDensity
import androidx.compose.ui.unit.Density
@@ -23,7 +23,7 @@
import kotlin.math.sign
// copy-paste of
-// src/androidMain/kotlin/androidx/compose/foundation/animation/AndroidFlingCalculator.kt
+// src/androidMain/kotlin/androidx/compose/foundation/animation/AndroidFlingCalculator.android.kt
/**
* Earth's gravity in SI units (m/s^2); used to compute deceleration based on friction.
diff --git a/compose/foundation/foundation/src/desktopMain/kotlin/androidx/compose/foundation/animation/AndroidFlingSpline.kt b/compose/animation/animation/src/desktopMain/kotlin/androidx/compose/animation/AndroidFlingSpline.desktop.kt
similarity index 97%
rename from compose/foundation/foundation/src/desktopMain/kotlin/androidx/compose/foundation/animation/AndroidFlingSpline.kt
rename to compose/animation/animation/src/desktopMain/kotlin/androidx/compose/animation/AndroidFlingSpline.desktop.kt
index 53f2446..163e8ca 100644
--- a/compose/foundation/foundation/src/desktopMain/kotlin/androidx/compose/foundation/animation/AndroidFlingSpline.kt
+++ b/compose/animation/animation/src/desktopMain/kotlin/androidx/compose/animation/AndroidFlingSpline.desktop.kt
@@ -14,13 +14,13 @@
* limitations under the License.
*/
-package androidx.compose.foundation.animation
+package androidx.compose.animation
import kotlin.math.abs
import kotlin.math.ln
// copy-paste of
-// src/androidMain/kotlin/androidx/compose/foundation/animation/AndroidFlingSpline.kt
+// src/androidMain/kotlin/androidx/compose/foundation/animation/AndroidFlingSpline.android.kt
private const val Inflection = 0.35f // Tension lines cross at (Inflection, 1)
private const val StartTension = 0.5f
diff --git a/compose/foundation/foundation/src/desktopMain/kotlin/androidx/compose/foundation/animation/DesktopFlingConfig.kt b/compose/animation/animation/src/desktopMain/kotlin/androidx/compose/animation/DesktopActualDefaultDecayAnimationSpec.desktop.kt
similarity index 84%
copy from compose/foundation/foundation/src/desktopMain/kotlin/androidx/compose/foundation/animation/DesktopFlingConfig.kt
copy to compose/animation/animation/src/desktopMain/kotlin/androidx/compose/animation/DesktopActualDefaultDecayAnimationSpec.desktop.kt
index fbb4f8b..9c6af47 100644
--- a/compose/foundation/foundation/src/desktopMain/kotlin/androidx/compose/foundation/animation/DesktopFlingConfig.kt
+++ b/compose/animation/animation/src/desktopMain/kotlin/androidx/compose/animation/DesktopActualDefaultDecayAnimationSpec.desktop.kt
@@ -14,7 +14,7 @@
* limitations under the License.
*/
-package androidx.compose.foundation.animation
+package androidx.compose.animation
import androidx.compose.animation.core.DecayAnimationSpec
import androidx.compose.animation.core.generateDecayAnimationSpec
@@ -23,11 +23,11 @@
import androidx.compose.ui.platform.LocalDensity
@Composable
-internal actual fun rememberActualDecayAnimationSpec(): DecayAnimationSpec<Float> {
+actual fun defaultDecayAnimationSpec(): DecayAnimationSpec<Float> {
// This function will internally update the calculation of fling decay when the density changes,
// but the reference to the returned spec will not change across calls.
val density = LocalDensity.current
return remember(density.density) {
- DesktopFlingDecaySpec(density).generateDecayAnimationSpec()
+ DesktopDefaultDecayAnimationSpec(density).generateDecayAnimationSpec()
}
}
\ No newline at end of file
diff --git a/compose/foundation/foundation/src/desktopMain/kotlin/androidx/compose/foundation/animation/DesktopFlingDecaySpec.kt b/compose/animation/animation/src/desktopMain/kotlin/androidx/compose/animation/DesktopDefaultDecayAnimationSpec.desktop.kt
similarity index 93%
rename from compose/foundation/foundation/src/desktopMain/kotlin/androidx/compose/foundation/animation/DesktopFlingDecaySpec.kt
rename to compose/animation/animation/src/desktopMain/kotlin/androidx/compose/animation/DesktopDefaultDecayAnimationSpec.desktop.kt
index f55f526..728baa9 100644
--- a/compose/foundation/foundation/src/desktopMain/kotlin/androidx/compose/foundation/animation/DesktopFlingDecaySpec.kt
+++ b/compose/animation/animation/src/desktopMain/kotlin/androidx/compose/animation/DesktopDefaultDecayAnimationSpec.desktop.kt
@@ -14,13 +14,13 @@
* limitations under the License.
*/
-package androidx.compose.foundation.animation
+package androidx.compose.animation
import androidx.compose.animation.core.FloatDecayAnimationSpec
import androidx.compose.ui.unit.Density
import kotlin.math.sign
-internal class DesktopFlingDecaySpec(density: Density) : FloatDecayAnimationSpec {
+internal class DesktopDefaultDecayAnimationSpec(density: Density) : FloatDecayAnimationSpec {
// TODO(demin): extract common SplineBasedFlingCalculator if any other OS uses similar
// fling implementation
// temporarily we use android implementation of fling decay
diff --git a/compose/foundation/foundation/api/current.txt b/compose/foundation/foundation/api/current.txt
index c3dfad7..37c6058 100644
--- a/compose/foundation/foundation/api/current.txt
+++ b/compose/foundation/foundation/api/current.txt
@@ -116,9 +116,9 @@
}
public final class ScrollKt {
- method public static androidx.compose.ui.Modifier horizontalScroll(androidx.compose.ui.Modifier, androidx.compose.foundation.ScrollState state, optional boolean enabled, optional androidx.compose.foundation.animation.FlingBehavior? flingBehavior, optional boolean reverseScrolling);
+ method public static androidx.compose.ui.Modifier horizontalScroll(androidx.compose.ui.Modifier, androidx.compose.foundation.ScrollState state, optional boolean enabled, optional androidx.compose.foundation.gestures.FlingBehavior? flingBehavior, optional boolean reverseScrolling);
method @androidx.compose.runtime.Composable public static androidx.compose.foundation.ScrollState rememberScrollState(optional float initial);
- method public static androidx.compose.ui.Modifier verticalScroll(androidx.compose.ui.Modifier, androidx.compose.foundation.ScrollState state, optional boolean enabled, optional androidx.compose.foundation.animation.FlingBehavior? flingBehavior, optional boolean reverseScrolling);
+ method public static androidx.compose.ui.Modifier verticalScroll(androidx.compose.ui.Modifier, androidx.compose.foundation.ScrollState state, optional boolean enabled, optional androidx.compose.foundation.gestures.FlingBehavior? flingBehavior, optional boolean reverseScrolling);
}
@androidx.compose.runtime.Stable public final class ScrollState implements androidx.compose.foundation.gestures.ScrollableState {
@@ -145,46 +145,6 @@
}
-package androidx.compose.foundation.animation {
-
- public final class AndroidFlingCalculatorKt {
- }
-
- public final class AndroidFlingConfigKt {
- }
-
- public final class AndroidFlingDecaySpecKt {
- method public static <T> androidx.compose.animation.core.DecayAnimationSpec<T> androidFlingDecay(androidx.compose.ui.unit.Density density);
- }
-
- public final class AndroidFlingSplineKt {
- }
-
- public interface FlingBehavior {
- method public suspend Object? performFling(androidx.compose.foundation.gestures.ScrollScope, float initialVelocity, kotlin.coroutines.Continuation<? super java.lang.Float> p);
- }
-
- public final class FlingBehaviorKt {
- method @androidx.compose.runtime.Composable public static androidx.compose.animation.core.DecayAnimationSpec<java.lang.Float> rememberDefaultDecayAnimationSpec();
- }
-
- public final class FloatAndroidFlingDecaySpec implements androidx.compose.animation.core.FloatDecayAnimationSpec {
- ctor public FloatAndroidFlingDecaySpec(androidx.compose.ui.unit.Density density);
- method public float getAbsVelocityThreshold();
- method public long getDurationNanos(float initialValue, float initialVelocity);
- method public float getTargetValue(float initialValue, float initialVelocity);
- method public float getValueFromNanos(long playTimeNanos, float initialValue, float initialVelocity);
- method public float getVelocityFromNanos(long playTimeNanos, float initialValue, float initialVelocity);
- property public float absVelocityThreshold;
- }
-
- public final class ScrollingKt {
- method public static suspend Object? scrollBy(androidx.compose.foundation.gestures.ScrollableState, float value, kotlin.coroutines.Continuation<? super java.lang.Float> p);
- method public static suspend Object? smoothScrollBy(androidx.compose.foundation.gestures.ScrollableState, float value, optional androidx.compose.animation.core.AnimationSpec<java.lang.Float> spec, optional kotlin.coroutines.Continuation<? super java.lang.Float> p);
- }
-
-}
-
package androidx.compose.foundation.gestures {
public final class AndroidScrollableKt {
@@ -221,6 +181,10 @@
method public suspend Object? drag(optional androidx.compose.foundation.MutatePriority dragPriority, kotlin.jvm.functions.Function2<? super androidx.compose.foundation.gestures.DragScope,? super kotlin.coroutines.Continuation<? super kotlin.Unit>,?> block, kotlin.coroutines.Continuation<? super kotlin.Unit> p);
}
+ public interface FlingBehavior {
+ method public suspend Object? performFling(androidx.compose.foundation.gestures.ScrollScope, float initialVelocity, kotlin.coroutines.Continuation<? super java.lang.Float> p);
+ }
+
public final class ForEachGestureKt {
method public static suspend Object? forEachGesture(androidx.compose.ui.input.pointer.PointerInputScope, kotlin.jvm.functions.Function2<? super androidx.compose.ui.input.pointer.PointerInputScope,? super kotlin.coroutines.Continuation<? super kotlin.Unit>,?> block, kotlin.coroutines.Continuation<? super kotlin.Unit> p);
}
@@ -240,17 +204,23 @@
method public suspend Object? tryAwaitRelease(kotlin.coroutines.Continuation<? super java.lang.Boolean> p);
}
+ public final class ScrollExtensionsKt {
+ method public static suspend Object? scrollBy(androidx.compose.foundation.gestures.ScrollableState, float value, kotlin.coroutines.Continuation<? super java.lang.Float> p);
+ method public static suspend Object? smoothScrollBy(androidx.compose.foundation.gestures.ScrollableState, float value, optional androidx.compose.animation.core.AnimationSpec<java.lang.Float> spec, optional kotlin.coroutines.Continuation<? super java.lang.Float> p);
+ method public static suspend Object? stopScroll(androidx.compose.foundation.gestures.ScrollableState, optional androidx.compose.foundation.MutatePriority scrollPriority, optional kotlin.coroutines.Continuation<? super kotlin.Unit> p);
+ }
+
public interface ScrollScope {
method public float scrollBy(float pixels);
}
public final class ScrollableDefaults {
- method @androidx.compose.runtime.Composable public androidx.compose.foundation.animation.FlingBehavior flingBehavior();
+ method @androidx.compose.runtime.Composable public androidx.compose.foundation.gestures.FlingBehavior flingBehavior();
field public static final androidx.compose.foundation.gestures.ScrollableDefaults INSTANCE;
}
public final class ScrollableKt {
- method public static androidx.compose.ui.Modifier scrollable(androidx.compose.ui.Modifier, androidx.compose.foundation.gestures.ScrollableState state, androidx.compose.foundation.gestures.Orientation orientation, optional boolean enabled, optional boolean reverseDirection, optional androidx.compose.foundation.animation.FlingBehavior? flingBehavior, optional androidx.compose.foundation.InteractionState? interactionState);
+ method public static androidx.compose.ui.Modifier scrollable(androidx.compose.ui.Modifier, androidx.compose.foundation.gestures.ScrollableState state, androidx.compose.foundation.gestures.Orientation orientation, optional boolean enabled, optional boolean reverseDirection, optional androidx.compose.foundation.gestures.FlingBehavior? flingBehavior, optional androidx.compose.foundation.InteractionState? interactionState);
}
public interface ScrollableState {
@@ -263,7 +233,6 @@
public final class ScrollableStateKt {
method public static androidx.compose.foundation.gestures.ScrollableState ScrollableState(kotlin.jvm.functions.Function1<? super java.lang.Float,java.lang.Float> consumeScrollDelta);
method @androidx.compose.runtime.Composable public static androidx.compose.foundation.gestures.ScrollableState rememberScrollableState(kotlin.jvm.functions.Function1<? super java.lang.Float,java.lang.Float> consumeScrollDelta);
- method public static suspend Object? stopScroll(androidx.compose.foundation.gestures.ScrollableState, optional androidx.compose.foundation.MutatePriority scrollPriority, optional kotlin.coroutines.Continuation<? super kotlin.Unit> p);
}
public final class TapGestureDetectorKt {
@@ -317,8 +286,8 @@
}
public final class LazyDslKt {
- method @androidx.compose.runtime.Composable public static void LazyColumn(optional androidx.compose.ui.Modifier modifier, optional androidx.compose.foundation.lazy.LazyListState state, optional androidx.compose.foundation.layout.PaddingValues contentPadding, optional boolean reverseLayout, optional androidx.compose.foundation.layout.Arrangement.Vertical verticalArrangement, optional androidx.compose.ui.Alignment.Horizontal horizontalAlignment, optional androidx.compose.foundation.animation.FlingBehavior flingBehavior, kotlin.jvm.functions.Function1<? super androidx.compose.foundation.lazy.LazyListScope,kotlin.Unit> content);
- method @androidx.compose.runtime.Composable public static void LazyRow(optional androidx.compose.ui.Modifier modifier, optional androidx.compose.foundation.lazy.LazyListState state, optional androidx.compose.foundation.layout.PaddingValues contentPadding, optional boolean reverseLayout, optional androidx.compose.foundation.layout.Arrangement.Horizontal horizontalArrangement, optional androidx.compose.ui.Alignment.Vertical verticalAlignment, optional androidx.compose.foundation.animation.FlingBehavior flingBehavior, kotlin.jvm.functions.Function1<? super androidx.compose.foundation.lazy.LazyListScope,kotlin.Unit> content);
+ method @androidx.compose.runtime.Composable public static void LazyColumn(optional androidx.compose.ui.Modifier modifier, optional androidx.compose.foundation.lazy.LazyListState state, optional androidx.compose.foundation.layout.PaddingValues contentPadding, optional boolean reverseLayout, optional androidx.compose.foundation.layout.Arrangement.Vertical verticalArrangement, optional androidx.compose.ui.Alignment.Horizontal horizontalAlignment, optional androidx.compose.foundation.gestures.FlingBehavior flingBehavior, kotlin.jvm.functions.Function1<? super androidx.compose.foundation.lazy.LazyListScope,kotlin.Unit> content);
+ method @androidx.compose.runtime.Composable public static void LazyRow(optional androidx.compose.ui.Modifier modifier, optional androidx.compose.foundation.lazy.LazyListState state, optional androidx.compose.foundation.layout.PaddingValues contentPadding, optional boolean reverseLayout, optional androidx.compose.foundation.layout.Arrangement.Horizontal horizontalArrangement, optional androidx.compose.ui.Alignment.Vertical verticalAlignment, optional androidx.compose.foundation.gestures.FlingBehavior flingBehavior, kotlin.jvm.functions.Function1<? super androidx.compose.foundation.lazy.LazyListScope,kotlin.Unit> content);
method public static inline <T> void items(androidx.compose.foundation.lazy.LazyListScope, java.util.List<? extends T> items, optional kotlin.jvm.functions.Function1<? super T,?>? key, kotlin.jvm.functions.Function2<? super androidx.compose.foundation.lazy.LazyItemScope,? super T,kotlin.Unit> itemContent);
method public static inline <T> void items(androidx.compose.foundation.lazy.LazyListScope, T![] items, optional kotlin.jvm.functions.Function1<? super T,?>? key, kotlin.jvm.functions.Function2<? super androidx.compose.foundation.lazy.LazyItemScope,? super T,kotlin.Unit> itemContent);
method public static inline <T> void itemsIndexed(androidx.compose.foundation.lazy.LazyListScope, java.util.List<? extends T> items, optional kotlin.jvm.functions.Function2<? super java.lang.Integer,? super T,?>? key, kotlin.jvm.functions.Function3<? super androidx.compose.foundation.lazy.LazyItemScope,? super java.lang.Integer,? super T,kotlin.Unit> itemContent);
diff --git a/compose/foundation/foundation/api/public_plus_experimental_current.txt b/compose/foundation/foundation/api/public_plus_experimental_current.txt
index c3dfad7..37c6058 100644
--- a/compose/foundation/foundation/api/public_plus_experimental_current.txt
+++ b/compose/foundation/foundation/api/public_plus_experimental_current.txt
@@ -116,9 +116,9 @@
}
public final class ScrollKt {
- method public static androidx.compose.ui.Modifier horizontalScroll(androidx.compose.ui.Modifier, androidx.compose.foundation.ScrollState state, optional boolean enabled, optional androidx.compose.foundation.animation.FlingBehavior? flingBehavior, optional boolean reverseScrolling);
+ method public static androidx.compose.ui.Modifier horizontalScroll(androidx.compose.ui.Modifier, androidx.compose.foundation.ScrollState state, optional boolean enabled, optional androidx.compose.foundation.gestures.FlingBehavior? flingBehavior, optional boolean reverseScrolling);
method @androidx.compose.runtime.Composable public static androidx.compose.foundation.ScrollState rememberScrollState(optional float initial);
- method public static androidx.compose.ui.Modifier verticalScroll(androidx.compose.ui.Modifier, androidx.compose.foundation.ScrollState state, optional boolean enabled, optional androidx.compose.foundation.animation.FlingBehavior? flingBehavior, optional boolean reverseScrolling);
+ method public static androidx.compose.ui.Modifier verticalScroll(androidx.compose.ui.Modifier, androidx.compose.foundation.ScrollState state, optional boolean enabled, optional androidx.compose.foundation.gestures.FlingBehavior? flingBehavior, optional boolean reverseScrolling);
}
@androidx.compose.runtime.Stable public final class ScrollState implements androidx.compose.foundation.gestures.ScrollableState {
@@ -145,46 +145,6 @@
}
-package androidx.compose.foundation.animation {
-
- public final class AndroidFlingCalculatorKt {
- }
-
- public final class AndroidFlingConfigKt {
- }
-
- public final class AndroidFlingDecaySpecKt {
- method public static <T> androidx.compose.animation.core.DecayAnimationSpec<T> androidFlingDecay(androidx.compose.ui.unit.Density density);
- }
-
- public final class AndroidFlingSplineKt {
- }
-
- public interface FlingBehavior {
- method public suspend Object? performFling(androidx.compose.foundation.gestures.ScrollScope, float initialVelocity, kotlin.coroutines.Continuation<? super java.lang.Float> p);
- }
-
- public final class FlingBehaviorKt {
- method @androidx.compose.runtime.Composable public static androidx.compose.animation.core.DecayAnimationSpec<java.lang.Float> rememberDefaultDecayAnimationSpec();
- }
-
- public final class FloatAndroidFlingDecaySpec implements androidx.compose.animation.core.FloatDecayAnimationSpec {
- ctor public FloatAndroidFlingDecaySpec(androidx.compose.ui.unit.Density density);
- method public float getAbsVelocityThreshold();
- method public long getDurationNanos(float initialValue, float initialVelocity);
- method public float getTargetValue(float initialValue, float initialVelocity);
- method public float getValueFromNanos(long playTimeNanos, float initialValue, float initialVelocity);
- method public float getVelocityFromNanos(long playTimeNanos, float initialValue, float initialVelocity);
- property public float absVelocityThreshold;
- }
-
- public final class ScrollingKt {
- method public static suspend Object? scrollBy(androidx.compose.foundation.gestures.ScrollableState, float value, kotlin.coroutines.Continuation<? super java.lang.Float> p);
- method public static suspend Object? smoothScrollBy(androidx.compose.foundation.gestures.ScrollableState, float value, optional androidx.compose.animation.core.AnimationSpec<java.lang.Float> spec, optional kotlin.coroutines.Continuation<? super java.lang.Float> p);
- }
-
-}
-
package androidx.compose.foundation.gestures {
public final class AndroidScrollableKt {
@@ -221,6 +181,10 @@
method public suspend Object? drag(optional androidx.compose.foundation.MutatePriority dragPriority, kotlin.jvm.functions.Function2<? super androidx.compose.foundation.gestures.DragScope,? super kotlin.coroutines.Continuation<? super kotlin.Unit>,?> block, kotlin.coroutines.Continuation<? super kotlin.Unit> p);
}
+ public interface FlingBehavior {
+ method public suspend Object? performFling(androidx.compose.foundation.gestures.ScrollScope, float initialVelocity, kotlin.coroutines.Continuation<? super java.lang.Float> p);
+ }
+
public final class ForEachGestureKt {
method public static suspend Object? forEachGesture(androidx.compose.ui.input.pointer.PointerInputScope, kotlin.jvm.functions.Function2<? super androidx.compose.ui.input.pointer.PointerInputScope,? super kotlin.coroutines.Continuation<? super kotlin.Unit>,?> block, kotlin.coroutines.Continuation<? super kotlin.Unit> p);
}
@@ -240,17 +204,23 @@
method public suspend Object? tryAwaitRelease(kotlin.coroutines.Continuation<? super java.lang.Boolean> p);
}
+ public final class ScrollExtensionsKt {
+ method public static suspend Object? scrollBy(androidx.compose.foundation.gestures.ScrollableState, float value, kotlin.coroutines.Continuation<? super java.lang.Float> p);
+ method public static suspend Object? smoothScrollBy(androidx.compose.foundation.gestures.ScrollableState, float value, optional androidx.compose.animation.core.AnimationSpec<java.lang.Float> spec, optional kotlin.coroutines.Continuation<? super java.lang.Float> p);
+ method public static suspend Object? stopScroll(androidx.compose.foundation.gestures.ScrollableState, optional androidx.compose.foundation.MutatePriority scrollPriority, optional kotlin.coroutines.Continuation<? super kotlin.Unit> p);
+ }
+
public interface ScrollScope {
method public float scrollBy(float pixels);
}
public final class ScrollableDefaults {
- method @androidx.compose.runtime.Composable public androidx.compose.foundation.animation.FlingBehavior flingBehavior();
+ method @androidx.compose.runtime.Composable public androidx.compose.foundation.gestures.FlingBehavior flingBehavior();
field public static final androidx.compose.foundation.gestures.ScrollableDefaults INSTANCE;
}
public final class ScrollableKt {
- method public static androidx.compose.ui.Modifier scrollable(androidx.compose.ui.Modifier, androidx.compose.foundation.gestures.ScrollableState state, androidx.compose.foundation.gestures.Orientation orientation, optional boolean enabled, optional boolean reverseDirection, optional androidx.compose.foundation.animation.FlingBehavior? flingBehavior, optional androidx.compose.foundation.InteractionState? interactionState);
+ method public static androidx.compose.ui.Modifier scrollable(androidx.compose.ui.Modifier, androidx.compose.foundation.gestures.ScrollableState state, androidx.compose.foundation.gestures.Orientation orientation, optional boolean enabled, optional boolean reverseDirection, optional androidx.compose.foundation.gestures.FlingBehavior? flingBehavior, optional androidx.compose.foundation.InteractionState? interactionState);
}
public interface ScrollableState {
@@ -263,7 +233,6 @@
public final class ScrollableStateKt {
method public static androidx.compose.foundation.gestures.ScrollableState ScrollableState(kotlin.jvm.functions.Function1<? super java.lang.Float,java.lang.Float> consumeScrollDelta);
method @androidx.compose.runtime.Composable public static androidx.compose.foundation.gestures.ScrollableState rememberScrollableState(kotlin.jvm.functions.Function1<? super java.lang.Float,java.lang.Float> consumeScrollDelta);
- method public static suspend Object? stopScroll(androidx.compose.foundation.gestures.ScrollableState, optional androidx.compose.foundation.MutatePriority scrollPriority, optional kotlin.coroutines.Continuation<? super kotlin.Unit> p);
}
public final class TapGestureDetectorKt {
@@ -317,8 +286,8 @@
}
public final class LazyDslKt {
- method @androidx.compose.runtime.Composable public static void LazyColumn(optional androidx.compose.ui.Modifier modifier, optional androidx.compose.foundation.lazy.LazyListState state, optional androidx.compose.foundation.layout.PaddingValues contentPadding, optional boolean reverseLayout, optional androidx.compose.foundation.layout.Arrangement.Vertical verticalArrangement, optional androidx.compose.ui.Alignment.Horizontal horizontalAlignment, optional androidx.compose.foundation.animation.FlingBehavior flingBehavior, kotlin.jvm.functions.Function1<? super androidx.compose.foundation.lazy.LazyListScope,kotlin.Unit> content);
- method @androidx.compose.runtime.Composable public static void LazyRow(optional androidx.compose.ui.Modifier modifier, optional androidx.compose.foundation.lazy.LazyListState state, optional androidx.compose.foundation.layout.PaddingValues contentPadding, optional boolean reverseLayout, optional androidx.compose.foundation.layout.Arrangement.Horizontal horizontalArrangement, optional androidx.compose.ui.Alignment.Vertical verticalAlignment, optional androidx.compose.foundation.animation.FlingBehavior flingBehavior, kotlin.jvm.functions.Function1<? super androidx.compose.foundation.lazy.LazyListScope,kotlin.Unit> content);
+ method @androidx.compose.runtime.Composable public static void LazyColumn(optional androidx.compose.ui.Modifier modifier, optional androidx.compose.foundation.lazy.LazyListState state, optional androidx.compose.foundation.layout.PaddingValues contentPadding, optional boolean reverseLayout, optional androidx.compose.foundation.layout.Arrangement.Vertical verticalArrangement, optional androidx.compose.ui.Alignment.Horizontal horizontalAlignment, optional androidx.compose.foundation.gestures.FlingBehavior flingBehavior, kotlin.jvm.functions.Function1<? super androidx.compose.foundation.lazy.LazyListScope,kotlin.Unit> content);
+ method @androidx.compose.runtime.Composable public static void LazyRow(optional androidx.compose.ui.Modifier modifier, optional androidx.compose.foundation.lazy.LazyListState state, optional androidx.compose.foundation.layout.PaddingValues contentPadding, optional boolean reverseLayout, optional androidx.compose.foundation.layout.Arrangement.Horizontal horizontalArrangement, optional androidx.compose.ui.Alignment.Vertical verticalAlignment, optional androidx.compose.foundation.gestures.FlingBehavior flingBehavior, kotlin.jvm.functions.Function1<? super androidx.compose.foundation.lazy.LazyListScope,kotlin.Unit> content);
method public static inline <T> void items(androidx.compose.foundation.lazy.LazyListScope, java.util.List<? extends T> items, optional kotlin.jvm.functions.Function1<? super T,?>? key, kotlin.jvm.functions.Function2<? super androidx.compose.foundation.lazy.LazyItemScope,? super T,kotlin.Unit> itemContent);
method public static inline <T> void items(androidx.compose.foundation.lazy.LazyListScope, T![] items, optional kotlin.jvm.functions.Function1<? super T,?>? key, kotlin.jvm.functions.Function2<? super androidx.compose.foundation.lazy.LazyItemScope,? super T,kotlin.Unit> itemContent);
method public static inline <T> void itemsIndexed(androidx.compose.foundation.lazy.LazyListScope, java.util.List<? extends T> items, optional kotlin.jvm.functions.Function2<? super java.lang.Integer,? super T,?>? key, kotlin.jvm.functions.Function3<? super androidx.compose.foundation.lazy.LazyItemScope,? super java.lang.Integer,? super T,kotlin.Unit> itemContent);
diff --git a/compose/foundation/foundation/api/restricted_current.txt b/compose/foundation/foundation/api/restricted_current.txt
index c3dfad7..37c6058 100644
--- a/compose/foundation/foundation/api/restricted_current.txt
+++ b/compose/foundation/foundation/api/restricted_current.txt
@@ -116,9 +116,9 @@
}
public final class ScrollKt {
- method public static androidx.compose.ui.Modifier horizontalScroll(androidx.compose.ui.Modifier, androidx.compose.foundation.ScrollState state, optional boolean enabled, optional androidx.compose.foundation.animation.FlingBehavior? flingBehavior, optional boolean reverseScrolling);
+ method public static androidx.compose.ui.Modifier horizontalScroll(androidx.compose.ui.Modifier, androidx.compose.foundation.ScrollState state, optional boolean enabled, optional androidx.compose.foundation.gestures.FlingBehavior? flingBehavior, optional boolean reverseScrolling);
method @androidx.compose.runtime.Composable public static androidx.compose.foundation.ScrollState rememberScrollState(optional float initial);
- method public static androidx.compose.ui.Modifier verticalScroll(androidx.compose.ui.Modifier, androidx.compose.foundation.ScrollState state, optional boolean enabled, optional androidx.compose.foundation.animation.FlingBehavior? flingBehavior, optional boolean reverseScrolling);
+ method public static androidx.compose.ui.Modifier verticalScroll(androidx.compose.ui.Modifier, androidx.compose.foundation.ScrollState state, optional boolean enabled, optional androidx.compose.foundation.gestures.FlingBehavior? flingBehavior, optional boolean reverseScrolling);
}
@androidx.compose.runtime.Stable public final class ScrollState implements androidx.compose.foundation.gestures.ScrollableState {
@@ -145,46 +145,6 @@
}
-package androidx.compose.foundation.animation {
-
- public final class AndroidFlingCalculatorKt {
- }
-
- public final class AndroidFlingConfigKt {
- }
-
- public final class AndroidFlingDecaySpecKt {
- method public static <T> androidx.compose.animation.core.DecayAnimationSpec<T> androidFlingDecay(androidx.compose.ui.unit.Density density);
- }
-
- public final class AndroidFlingSplineKt {
- }
-
- public interface FlingBehavior {
- method public suspend Object? performFling(androidx.compose.foundation.gestures.ScrollScope, float initialVelocity, kotlin.coroutines.Continuation<? super java.lang.Float> p);
- }
-
- public final class FlingBehaviorKt {
- method @androidx.compose.runtime.Composable public static androidx.compose.animation.core.DecayAnimationSpec<java.lang.Float> rememberDefaultDecayAnimationSpec();
- }
-
- public final class FloatAndroidFlingDecaySpec implements androidx.compose.animation.core.FloatDecayAnimationSpec {
- ctor public FloatAndroidFlingDecaySpec(androidx.compose.ui.unit.Density density);
- method public float getAbsVelocityThreshold();
- method public long getDurationNanos(float initialValue, float initialVelocity);
- method public float getTargetValue(float initialValue, float initialVelocity);
- method public float getValueFromNanos(long playTimeNanos, float initialValue, float initialVelocity);
- method public float getVelocityFromNanos(long playTimeNanos, float initialValue, float initialVelocity);
- property public float absVelocityThreshold;
- }
-
- public final class ScrollingKt {
- method public static suspend Object? scrollBy(androidx.compose.foundation.gestures.ScrollableState, float value, kotlin.coroutines.Continuation<? super java.lang.Float> p);
- method public static suspend Object? smoothScrollBy(androidx.compose.foundation.gestures.ScrollableState, float value, optional androidx.compose.animation.core.AnimationSpec<java.lang.Float> spec, optional kotlin.coroutines.Continuation<? super java.lang.Float> p);
- }
-
-}
-
package androidx.compose.foundation.gestures {
public final class AndroidScrollableKt {
@@ -221,6 +181,10 @@
method public suspend Object? drag(optional androidx.compose.foundation.MutatePriority dragPriority, kotlin.jvm.functions.Function2<? super androidx.compose.foundation.gestures.DragScope,? super kotlin.coroutines.Continuation<? super kotlin.Unit>,?> block, kotlin.coroutines.Continuation<? super kotlin.Unit> p);
}
+ public interface FlingBehavior {
+ method public suspend Object? performFling(androidx.compose.foundation.gestures.ScrollScope, float initialVelocity, kotlin.coroutines.Continuation<? super java.lang.Float> p);
+ }
+
public final class ForEachGestureKt {
method public static suspend Object? forEachGesture(androidx.compose.ui.input.pointer.PointerInputScope, kotlin.jvm.functions.Function2<? super androidx.compose.ui.input.pointer.PointerInputScope,? super kotlin.coroutines.Continuation<? super kotlin.Unit>,?> block, kotlin.coroutines.Continuation<? super kotlin.Unit> p);
}
@@ -240,17 +204,23 @@
method public suspend Object? tryAwaitRelease(kotlin.coroutines.Continuation<? super java.lang.Boolean> p);
}
+ public final class ScrollExtensionsKt {
+ method public static suspend Object? scrollBy(androidx.compose.foundation.gestures.ScrollableState, float value, kotlin.coroutines.Continuation<? super java.lang.Float> p);
+ method public static suspend Object? smoothScrollBy(androidx.compose.foundation.gestures.ScrollableState, float value, optional androidx.compose.animation.core.AnimationSpec<java.lang.Float> spec, optional kotlin.coroutines.Continuation<? super java.lang.Float> p);
+ method public static suspend Object? stopScroll(androidx.compose.foundation.gestures.ScrollableState, optional androidx.compose.foundation.MutatePriority scrollPriority, optional kotlin.coroutines.Continuation<? super kotlin.Unit> p);
+ }
+
public interface ScrollScope {
method public float scrollBy(float pixels);
}
public final class ScrollableDefaults {
- method @androidx.compose.runtime.Composable public androidx.compose.foundation.animation.FlingBehavior flingBehavior();
+ method @androidx.compose.runtime.Composable public androidx.compose.foundation.gestures.FlingBehavior flingBehavior();
field public static final androidx.compose.foundation.gestures.ScrollableDefaults INSTANCE;
}
public final class ScrollableKt {
- method public static androidx.compose.ui.Modifier scrollable(androidx.compose.ui.Modifier, androidx.compose.foundation.gestures.ScrollableState state, androidx.compose.foundation.gestures.Orientation orientation, optional boolean enabled, optional boolean reverseDirection, optional androidx.compose.foundation.animation.FlingBehavior? flingBehavior, optional androidx.compose.foundation.InteractionState? interactionState);
+ method public static androidx.compose.ui.Modifier scrollable(androidx.compose.ui.Modifier, androidx.compose.foundation.gestures.ScrollableState state, androidx.compose.foundation.gestures.Orientation orientation, optional boolean enabled, optional boolean reverseDirection, optional androidx.compose.foundation.gestures.FlingBehavior? flingBehavior, optional androidx.compose.foundation.InteractionState? interactionState);
}
public interface ScrollableState {
@@ -263,7 +233,6 @@
public final class ScrollableStateKt {
method public static androidx.compose.foundation.gestures.ScrollableState ScrollableState(kotlin.jvm.functions.Function1<? super java.lang.Float,java.lang.Float> consumeScrollDelta);
method @androidx.compose.runtime.Composable public static androidx.compose.foundation.gestures.ScrollableState rememberScrollableState(kotlin.jvm.functions.Function1<? super java.lang.Float,java.lang.Float> consumeScrollDelta);
- method public static suspend Object? stopScroll(androidx.compose.foundation.gestures.ScrollableState, optional androidx.compose.foundation.MutatePriority scrollPriority, optional kotlin.coroutines.Continuation<? super kotlin.Unit> p);
}
public final class TapGestureDetectorKt {
@@ -317,8 +286,8 @@
}
public final class LazyDslKt {
- method @androidx.compose.runtime.Composable public static void LazyColumn(optional androidx.compose.ui.Modifier modifier, optional androidx.compose.foundation.lazy.LazyListState state, optional androidx.compose.foundation.layout.PaddingValues contentPadding, optional boolean reverseLayout, optional androidx.compose.foundation.layout.Arrangement.Vertical verticalArrangement, optional androidx.compose.ui.Alignment.Horizontal horizontalAlignment, optional androidx.compose.foundation.animation.FlingBehavior flingBehavior, kotlin.jvm.functions.Function1<? super androidx.compose.foundation.lazy.LazyListScope,kotlin.Unit> content);
- method @androidx.compose.runtime.Composable public static void LazyRow(optional androidx.compose.ui.Modifier modifier, optional androidx.compose.foundation.lazy.LazyListState state, optional androidx.compose.foundation.layout.PaddingValues contentPadding, optional boolean reverseLayout, optional androidx.compose.foundation.layout.Arrangement.Horizontal horizontalArrangement, optional androidx.compose.ui.Alignment.Vertical verticalAlignment, optional androidx.compose.foundation.animation.FlingBehavior flingBehavior, kotlin.jvm.functions.Function1<? super androidx.compose.foundation.lazy.LazyListScope,kotlin.Unit> content);
+ method @androidx.compose.runtime.Composable public static void LazyColumn(optional androidx.compose.ui.Modifier modifier, optional androidx.compose.foundation.lazy.LazyListState state, optional androidx.compose.foundation.layout.PaddingValues contentPadding, optional boolean reverseLayout, optional androidx.compose.foundation.layout.Arrangement.Vertical verticalArrangement, optional androidx.compose.ui.Alignment.Horizontal horizontalAlignment, optional androidx.compose.foundation.gestures.FlingBehavior flingBehavior, kotlin.jvm.functions.Function1<? super androidx.compose.foundation.lazy.LazyListScope,kotlin.Unit> content);
+ method @androidx.compose.runtime.Composable public static void LazyRow(optional androidx.compose.ui.Modifier modifier, optional androidx.compose.foundation.lazy.LazyListState state, optional androidx.compose.foundation.layout.PaddingValues contentPadding, optional boolean reverseLayout, optional androidx.compose.foundation.layout.Arrangement.Horizontal horizontalArrangement, optional androidx.compose.ui.Alignment.Vertical verticalAlignment, optional androidx.compose.foundation.gestures.FlingBehavior flingBehavior, kotlin.jvm.functions.Function1<? super androidx.compose.foundation.lazy.LazyListScope,kotlin.Unit> content);
method public static inline <T> void items(androidx.compose.foundation.lazy.LazyListScope, java.util.List<? extends T> items, optional kotlin.jvm.functions.Function1<? super T,?>? key, kotlin.jvm.functions.Function2<? super androidx.compose.foundation.lazy.LazyItemScope,? super T,kotlin.Unit> itemContent);
method public static inline <T> void items(androidx.compose.foundation.lazy.LazyListScope, T![] items, optional kotlin.jvm.functions.Function1<? super T,?>? key, kotlin.jvm.functions.Function2<? super androidx.compose.foundation.lazy.LazyItemScope,? super T,kotlin.Unit> itemContent);
method public static inline <T> void itemsIndexed(androidx.compose.foundation.lazy.LazyListScope, java.util.List<? extends T> items, optional kotlin.jvm.functions.Function2<? super java.lang.Integer,? super T,?>? key, kotlin.jvm.functions.Function3<? super androidx.compose.foundation.lazy.LazyItemScope,? super java.lang.Integer,? super T,kotlin.Unit> itemContent);
diff --git a/compose/foundation/foundation/integration-tests/foundation-demos/src/main/java/androidx/compose/foundation/demos/ListDemos.kt b/compose/foundation/foundation/integration-tests/foundation-demos/src/main/java/androidx/compose/foundation/demos/ListDemos.kt
index c5a9fdc..604a042 100644
--- a/compose/foundation/foundation/integration-tests/foundation-demos/src/main/java/androidx/compose/foundation/demos/ListDemos.kt
+++ b/compose/foundation/foundation/integration-tests/foundation-demos/src/main/java/androidx/compose/foundation/demos/ListDemos.kt
@@ -20,14 +20,14 @@
import androidx.compose.animation.core.AnimationState
import androidx.compose.animation.core.animateTo
import androidx.compose.animation.core.calculateTargetValue
+import androidx.compose.animation.defaultDecayAnimationSpec
import androidx.compose.foundation.ExperimentalFoundationApi
import androidx.compose.foundation.Interaction
-import androidx.compose.foundation.animation.FlingBehavior
-import androidx.compose.foundation.animation.rememberDefaultDecayAnimationSpec
-import androidx.compose.foundation.animation.smoothScrollBy
import androidx.compose.foundation.background
import androidx.compose.foundation.border
+import androidx.compose.foundation.gestures.FlingBehavior
import androidx.compose.foundation.gestures.ScrollScope
+import androidx.compose.foundation.gestures.smoothScrollBy
import androidx.compose.foundation.layout.Arrangement
import androidx.compose.foundation.layout.Box
import androidx.compose.foundation.layout.Column
@@ -560,7 +560,7 @@
"Custom fling config will dance back and forth when you fling",
modifier = Modifier.padding(16.dp)
)
- val defaultDecay = rememberDefaultDecayAnimationSpec()
+ val defaultDecay = defaultDecayAnimationSpec()
val flingConfig = remember {
object : FlingBehavior {
override suspend fun ScrollScope.performFling(initialVelocity: Float): Float {
diff --git a/compose/foundation/foundation/samples/src/main/java/androidx/compose/foundation/samples/ScrollerSamples.kt b/compose/foundation/foundation/samples/src/main/java/androidx/compose/foundation/samples/ScrollerSamples.kt
index 0fddaa9..a7990bf 100644
--- a/compose/foundation/foundation/samples/src/main/java/androidx/compose/foundation/samples/ScrollerSamples.kt
+++ b/compose/foundation/foundation/samples/src/main/java/androidx/compose/foundation/samples/ScrollerSamples.kt
@@ -17,8 +17,8 @@
package androidx.compose.foundation.samples
import androidx.annotation.Sampled
-import androidx.compose.foundation.animation.scrollBy
-import androidx.compose.foundation.animation.smoothScrollBy
+import androidx.compose.foundation.gestures.scrollBy
+import androidx.compose.foundation.gestures.smoothScrollBy
import androidx.compose.foundation.background
import androidx.compose.foundation.clickable
import androidx.compose.foundation.horizontalScroll
diff --git a/compose/foundation/foundation/src/androidAndroidTest/kotlin/androidx/compose/foundation/ScrollTest.kt b/compose/foundation/foundation/src/androidAndroidTest/kotlin/androidx/compose/foundation/ScrollTest.kt
index af71387..0d76c2a 100644
--- a/compose/foundation/foundation/src/androidAndroidTest/kotlin/androidx/compose/foundation/ScrollTest.kt
+++ b/compose/foundation/foundation/src/androidAndroidTest/kotlin/androidx/compose/foundation/ScrollTest.kt
@@ -19,8 +19,8 @@
import android.os.Looper
import androidx.annotation.RequiresApi
import androidx.compose.animation.core.advanceClockMillis
-import androidx.compose.foundation.animation.scrollBy
-import androidx.compose.foundation.animation.smoothScrollBy
+import androidx.compose.foundation.gestures.scrollBy
+import androidx.compose.foundation.gestures.smoothScrollBy
import androidx.compose.foundation.gestures.ScrollableState
import androidx.compose.foundation.layout.Box
import androidx.compose.foundation.layout.Column
diff --git a/compose/foundation/foundation/src/androidAndroidTest/kotlin/androidx/compose/foundation/ScrollableTest.kt b/compose/foundation/foundation/src/androidAndroidTest/kotlin/androidx/compose/foundation/ScrollableTest.kt
index d0afd32..20a3379 100644
--- a/compose/foundation/foundation/src/androidAndroidTest/kotlin/androidx/compose/foundation/ScrollableTest.kt
+++ b/compose/foundation/foundation/src/androidAndroidTest/kotlin/androidx/compose/foundation/ScrollableTest.kt
@@ -17,7 +17,7 @@
package androidx.compose.foundation
import androidx.compose.animation.core.ManualFrameClock
-import androidx.compose.foundation.animation.smoothScrollBy
+import androidx.compose.foundation.gestures.smoothScrollBy
import androidx.compose.foundation.gestures.ScrollableState
import androidx.compose.foundation.gestures.scrollable
import androidx.compose.foundation.layout.Box
diff --git a/compose/foundation/foundation/src/androidAndroidTest/kotlin/androidx/compose/foundation/lazy/LazyColumnTest.kt b/compose/foundation/foundation/src/androidAndroidTest/kotlin/androidx/compose/foundation/lazy/LazyColumnTest.kt
index b40aa80..1193d11 100644
--- a/compose/foundation/foundation/src/androidAndroidTest/kotlin/androidx/compose/foundation/lazy/LazyColumnTest.kt
+++ b/compose/foundation/foundation/src/androidAndroidTest/kotlin/androidx/compose/foundation/lazy/LazyColumnTest.kt
@@ -18,7 +18,7 @@
import androidx.compose.animation.core.advanceClockMillis
import androidx.compose.animation.core.snap
-import androidx.compose.foundation.animation.smoothScrollBy
+import androidx.compose.foundation.gestures.smoothScrollBy
import androidx.compose.foundation.layout.Box
import androidx.compose.foundation.layout.Row
import androidx.compose.foundation.layout.Spacer
diff --git a/compose/foundation/foundation/src/androidAndroidTest/kotlin/androidx/compose/foundation/lazy/LazyListsContentPaddingTest.kt b/compose/foundation/foundation/src/androidAndroidTest/kotlin/androidx/compose/foundation/lazy/LazyListsContentPaddingTest.kt
index 4d0dc1f..6c874b8 100644
--- a/compose/foundation/foundation/src/androidAndroidTest/kotlin/androidx/compose/foundation/lazy/LazyListsContentPaddingTest.kt
+++ b/compose/foundation/foundation/src/androidAndroidTest/kotlin/androidx/compose/foundation/lazy/LazyListsContentPaddingTest.kt
@@ -17,7 +17,7 @@
package androidx.compose.foundation.lazy
import androidx.compose.animation.core.snap
-import androidx.compose.foundation.animation.smoothScrollBy
+import androidx.compose.foundation.gestures.smoothScrollBy
import androidx.compose.foundation.layout.Box
import androidx.compose.foundation.layout.PaddingValues
import androidx.compose.foundation.layout.Spacer
diff --git a/compose/foundation/foundation/src/androidAndroidTest/kotlin/androidx/compose/foundation/lazy/LazyRowTest.kt b/compose/foundation/foundation/src/androidAndroidTest/kotlin/androidx/compose/foundation/lazy/LazyRowTest.kt
index 645b66a..c1a3f1f 100644
--- a/compose/foundation/foundation/src/androidAndroidTest/kotlin/androidx/compose/foundation/lazy/LazyRowTest.kt
+++ b/compose/foundation/foundation/src/androidAndroidTest/kotlin/androidx/compose/foundation/lazy/LazyRowTest.kt
@@ -17,7 +17,7 @@
package androidx.compose.foundation.lazy
import androidx.compose.animation.core.snap
-import androidx.compose.foundation.animation.smoothScrollBy
+import androidx.compose.foundation.gestures.smoothScrollBy
import androidx.compose.foundation.layout.Box
import androidx.compose.foundation.layout.Column
import androidx.compose.foundation.layout.Spacer
diff --git a/compose/foundation/foundation/src/androidAndroidTest/kotlin/androidx/compose/foundation/lazy/LazyScrollTest.kt b/compose/foundation/foundation/src/androidAndroidTest/kotlin/androidx/compose/foundation/lazy/LazyScrollTest.kt
index 4f54427..ec15dff 100644
--- a/compose/foundation/foundation/src/androidAndroidTest/kotlin/androidx/compose/foundation/lazy/LazyScrollTest.kt
+++ b/compose/foundation/foundation/src/androidAndroidTest/kotlin/androidx/compose/foundation/lazy/LazyScrollTest.kt
@@ -17,7 +17,7 @@
package androidx.compose.foundation.lazy
import androidx.compose.foundation.ExperimentalFoundationApi
-import androidx.compose.foundation.animation.smoothScrollBy
+import androidx.compose.foundation.gestures.smoothScrollBy
import androidx.compose.foundation.layout.Spacer
import androidx.compose.foundation.layout.height
import androidx.compose.foundation.layout.width
diff --git a/compose/foundation/foundation/src/androidMain/kotlin/androidx/compose/foundation/animation/AndroidFlingConfig.kt b/compose/foundation/foundation/src/androidMain/kotlin/androidx/compose/foundation/animation/AndroidFlingConfig.kt
deleted file mode 100644
index 4ceb504..0000000
--- a/compose/foundation/foundation/src/androidMain/kotlin/androidx/compose/foundation/animation/AndroidFlingConfig.kt
+++ /dev/null
@@ -1,33 +0,0 @@
-/*
- * Copyright 2020 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package androidx.compose.foundation.animation
-
-import androidx.compose.animation.core.DecayAnimationSpec
-import androidx.compose.animation.core.generateDecayAnimationSpec
-import androidx.compose.runtime.Composable
-import androidx.compose.runtime.remember
-import androidx.compose.ui.platform.LocalDensity
-
-@Composable
-internal actual fun rememberActualDecayAnimationSpec(): DecayAnimationSpec<Float> {
- // This function will internally update the calculation of fling decay when the density changes,
- // but the reference to the returned spec will not change across calls.
- val density = LocalDensity.current
- return remember(density.density) {
- FloatAndroidFlingDecaySpec(density).generateDecayAnimationSpec()
- }
-}
\ No newline at end of file
diff --git a/compose/foundation/foundation/src/commonMain/kotlin/androidx/compose/foundation/Scroll.kt b/compose/foundation/foundation/src/commonMain/kotlin/androidx/compose/foundation/Scroll.kt
index 790604c..69b487a 100644
--- a/compose/foundation/foundation/src/commonMain/kotlin/androidx/compose/foundation/Scroll.kt
+++ b/compose/foundation/foundation/src/commonMain/kotlin/androidx/compose/foundation/Scroll.kt
@@ -18,14 +18,14 @@
import androidx.compose.animation.core.AnimationSpec
import androidx.compose.animation.core.SpringSpec
-import androidx.compose.foundation.animation.FlingBehavior
-import androidx.compose.foundation.animation.scrollBy
-import androidx.compose.foundation.animation.smoothScrollBy
+import androidx.compose.foundation.gestures.FlingBehavior
import androidx.compose.foundation.gestures.Orientation
import androidx.compose.foundation.gestures.ScrollScope
import androidx.compose.foundation.gestures.ScrollableDefaults
import androidx.compose.foundation.gestures.ScrollableState
+import androidx.compose.foundation.gestures.scrollBy
import androidx.compose.foundation.gestures.scrollable
+import androidx.compose.foundation.gestures.smoothScrollBy
import androidx.compose.runtime.Composable
import androidx.compose.runtime.Stable
import androidx.compose.runtime.getValue
diff --git a/compose/foundation/foundation/src/commonMain/kotlin/androidx/compose/foundation/animation/FlingBehavior.kt b/compose/foundation/foundation/src/commonMain/kotlin/androidx/compose/foundation/gestures/FlingBehavior.kt
similarity index 64%
rename from compose/foundation/foundation/src/commonMain/kotlin/androidx/compose/foundation/animation/FlingBehavior.kt
rename to compose/foundation/foundation/src/commonMain/kotlin/androidx/compose/foundation/gestures/FlingBehavior.kt
index 466eb39..fce4545 100644
--- a/compose/foundation/foundation/src/commonMain/kotlin/androidx/compose/foundation/animation/FlingBehavior.kt
+++ b/compose/foundation/foundation/src/commonMain/kotlin/androidx/compose/foundation/gestures/FlingBehavior.kt
@@ -1,5 +1,5 @@
/*
- * Copyright 2019 The Android Open Source Project
+ * Copyright 2021 The Android Open Source Project
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
@@ -14,28 +14,13 @@
* limitations under the License.
*/
-package androidx.compose.foundation.animation
-
-import androidx.compose.animation.core.DecayAnimationSpec
-import androidx.compose.foundation.gestures.ScrollScope
-import androidx.compose.runtime.Composable
-
-/**
- * Create and remember default [DecayAnimationSpec] representing a default fling curve for a
- * platform.
- */
-@Composable
-fun rememberDefaultDecayAnimationSpec(): DecayAnimationSpec<Float> =
- rememberActualDecayAnimationSpec()
-
-@Composable
-internal expect fun rememberActualDecayAnimationSpec(): DecayAnimationSpec<Float>
+package androidx.compose.foundation.gestures
/**
* Interface to specify fling behavior.
*
- * When drag has ended with velocity in [androidx.compose.foundation.gestures.scrollable],
- * [performFling] is invoked to perform fling animation and update state via [ScrollScope.scrollBy]
+ * When drag has ended with velocity in [scrollable], [performFling] is invoked to perform fling
+ * animation and update state via [ScrollScope.scrollBy]
*/
interface FlingBehavior {
/**
diff --git a/compose/foundation/foundation/src/commonMain/kotlin/androidx/compose/foundation/animation/Scrolling.kt b/compose/foundation/foundation/src/commonMain/kotlin/androidx/compose/foundation/gestures/ScrollExtensions.kt
similarity index 82%
rename from compose/foundation/foundation/src/commonMain/kotlin/androidx/compose/foundation/animation/Scrolling.kt
rename to compose/foundation/foundation/src/commonMain/kotlin/androidx/compose/foundation/gestures/ScrollExtensions.kt
index 32101f9..74d1450 100644
--- a/compose/foundation/foundation/src/commonMain/kotlin/androidx/compose/foundation/animation/Scrolling.kt
+++ b/compose/foundation/foundation/src/commonMain/kotlin/androidx/compose/foundation/gestures/ScrollExtensions.kt
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 The Android Open Source Project
+ * Copyright 2021 The Android Open Source Project
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
@@ -14,12 +14,12 @@
* limitations under the License.
*/
-package androidx.compose.foundation.animation
+package androidx.compose.foundation.gestures
import androidx.compose.animation.core.AnimationSpec
import androidx.compose.animation.core.VectorConverter
import androidx.compose.animation.core.spring
-import androidx.compose.foundation.gestures.ScrollableState
+import androidx.compose.foundation.MutatePriority
import androidx.compose.runtime.withFrameNanos
/**
@@ -89,4 +89,16 @@
consumed = scrollBy(value)
}
return consumed
+}
+
+/**
+ * Stop and suspend until any ongoing animation, smooth scrolling, fling, or any other scroll
+ * occurring via [ScrollableState.scroll] is terminated.
+ *
+ * @param scrollPriority scrolls that run with this priority or lower will be stopped
+ */
+suspend fun ScrollableState.stopScroll(scrollPriority: MutatePriority = MutatePriority.Default) {
+ scroll(scrollPriority) {
+ // do nothing, just lock the mutex so other scroll actors are cancelled
+ }
}
\ No newline at end of file
diff --git a/compose/foundation/foundation/src/commonMain/kotlin/androidx/compose/foundation/gestures/Scrollable.kt b/compose/foundation/foundation/src/commonMain/kotlin/androidx/compose/foundation/gestures/Scrollable.kt
index d9d4a93..bc7ebd8 100644
--- a/compose/foundation/foundation/src/commonMain/kotlin/androidx/compose/foundation/gestures/Scrollable.kt
+++ b/compose/foundation/foundation/src/commonMain/kotlin/androidx/compose/foundation/gestures/Scrollable.kt
@@ -19,13 +19,12 @@
import androidx.compose.animation.core.AnimationState
import androidx.compose.animation.core.DecayAnimationSpec
import androidx.compose.animation.core.animateDecay
+import androidx.compose.animation.defaultDecayAnimationSpec
import androidx.compose.foundation.Interaction
import androidx.compose.foundation.InteractionState
import androidx.compose.foundation.MutatePriority
import androidx.compose.foundation.gestures.Orientation.Horizontal
import androidx.compose.foundation.gestures.Orientation.Vertical
-import androidx.compose.foundation.animation.FlingBehavior
-import androidx.compose.foundation.animation.rememberDefaultDecayAnimationSpec
import androidx.compose.runtime.Composable
import androidx.compose.runtime.DisposableEffect
import androidx.compose.runtime.State
@@ -116,7 +115,7 @@
*/
@Composable
fun flingBehavior(): FlingBehavior {
- val flingSpec = rememberDefaultDecayAnimationSpec()
+ val flingSpec = defaultDecayAnimationSpec()
return remember(flingSpec) {
DefaultFlingBehavior(flingSpec)
}
diff --git a/compose/foundation/foundation/src/commonMain/kotlin/androidx/compose/foundation/gestures/ScrollableState.kt b/compose/foundation/foundation/src/commonMain/kotlin/androidx/compose/foundation/gestures/ScrollableState.kt
index e1ddb86..7c5abb4 100644
--- a/compose/foundation/foundation/src/commonMain/kotlin/androidx/compose/foundation/gestures/ScrollableState.kt
+++ b/compose/foundation/foundation/src/commonMain/kotlin/androidx/compose/foundation/gestures/ScrollableState.kt
@@ -29,13 +29,13 @@
* of scrollable containers such as [androidx.compose.foundation.lazy.LazyListState] or
* [androidx.compose.foundation.ScrollState] in order to provide low-level scrolling control via
* [scroll], as well as allowing for higher-level scrolling functions like
- * [androidx.compose.foundation.animation.smoothScrollBy] to be implemented as extension
+ * [smoothScrollBy] to be implemented as extension
* functions on [ScrollableState].
*
* Subclasses may also have their own methods that are specific to their interaction paradigm, such
* as [androidx.compose.foundation.lazy.LazyListState.snapToItemIndex].
*
- * @see androidx.compose.foundation.animation.smoothScrollBy
+ * @see androidx.compose.foundation.gestures.smoothScrollBy
* @see androidx.compose.foundation.gestures.scrollable
*/
interface ScrollableState {
@@ -128,18 +128,6 @@
fun scrollBy(pixels: Float): Float
}
-/**
- * Stop and suspend until any ongoing animation, smooth scrolling, fling, or any other scroll
- * occurring via [ScrollableState.scroll] is terminated.
- *
- * @param scrollPriority scrolls that run with this priority or lower will be stopped
- */
-suspend fun ScrollableState.stopScroll(scrollPriority: MutatePriority = MutatePriority.Default) {
- scroll(scrollPriority) {
- // do nothing, just lock the mutex so other scroll actors are cancelled
- }
-}
-
private class DefaultScrollableState(val onDelta: (Float) -> Float) : ScrollableState {
private val scrollScope: ScrollScope = object : ScrollScope {
diff --git a/compose/foundation/foundation/src/commonMain/kotlin/androidx/compose/foundation/lazy/LazyDsl.kt b/compose/foundation/foundation/src/commonMain/kotlin/androidx/compose/foundation/lazy/LazyDsl.kt
index 1eb4a60..78c71a9 100644
--- a/compose/foundation/foundation/src/commonMain/kotlin/androidx/compose/foundation/lazy/LazyDsl.kt
+++ b/compose/foundation/foundation/src/commonMain/kotlin/androidx/compose/foundation/lazy/LazyDsl.kt
@@ -17,7 +17,7 @@
package androidx.compose.foundation.lazy
import androidx.compose.foundation.ExperimentalFoundationApi
-import androidx.compose.foundation.animation.FlingBehavior
+import androidx.compose.foundation.gestures.FlingBehavior
import androidx.compose.foundation.gestures.ScrollableDefaults
import androidx.compose.foundation.layout.Arrangement
import androidx.compose.foundation.layout.PaddingValues
diff --git a/compose/foundation/foundation/src/commonMain/kotlin/androidx/compose/foundation/lazy/LazyList.kt b/compose/foundation/foundation/src/commonMain/kotlin/androidx/compose/foundation/lazy/LazyList.kt
index 1e72fb4..32f0936 100644
--- a/compose/foundation/foundation/src/commonMain/kotlin/androidx/compose/foundation/lazy/LazyList.kt
+++ b/compose/foundation/foundation/src/commonMain/kotlin/androidx/compose/foundation/lazy/LazyList.kt
@@ -16,7 +16,7 @@
package androidx.compose.foundation.lazy
-import androidx.compose.foundation.animation.FlingBehavior
+import androidx.compose.foundation.gestures.FlingBehavior
import androidx.compose.foundation.assertNotNestingScrollableContainers
import androidx.compose.foundation.gestures.Orientation
import androidx.compose.foundation.gestures.scrollable
diff --git a/compose/material/material/src/androidAndroidTest/kotlin/androidx/compose/material/SwipeableTest.kt b/compose/material/material/src/androidAndroidTest/kotlin/androidx/compose/material/SwipeableTest.kt
index 86aa79b..9a0426b 100644
--- a/compose/material/material/src/androidAndroidTest/kotlin/androidx/compose/material/SwipeableTest.kt
+++ b/compose/material/material/src/androidAndroidTest/kotlin/androidx/compose/material/SwipeableTest.kt
@@ -18,7 +18,7 @@
import androidx.compose.animation.core.AnimationEndReason
import androidx.compose.foundation.ScrollState
-import androidx.compose.foundation.animation.scrollBy
+import androidx.compose.foundation.gestures.scrollBy
import androidx.compose.foundation.layout.Box
import androidx.compose.foundation.layout.Column
import androidx.compose.foundation.layout.fillMaxSize