diff options
author | 2024-08-26 16:45:20 +0000 | |
---|---|---|
committer | 2024-08-26 16:45:20 +0000 | |
commit | 5228fb351af3c059bf89dab8ea655fba1c7ba6dd (patch) | |
tree | aae13f532385b041487a4640983f29bdf8a49c7d | |
parent | 0c47e4cd3f7ee39ce2df98ae1fb59b38e53de632 (diff) | |
parent | fd31d994b668d0b4725b9f6b0c7c4bbc9f98bbb6 (diff) |
Merge "STL: Default overscroll ProgressConverter slowly approaches 0.2f [1/2]" into main
3 files changed, 9 insertions, 3 deletions
diff --git a/packages/SystemUI/compose/scene/src/com/android/compose/animation/scene/TransitionDsl.kt b/packages/SystemUI/compose/scene/src/com/android/compose/animation/scene/TransitionDsl.kt index 5cc194d32424..2b5953c586db 100644 --- a/packages/SystemUI/compose/scene/src/com/android/compose/animation/scene/TransitionDsl.kt +++ b/packages/SystemUI/compose/scene/src/com/android/compose/animation/scene/TransitionDsl.kt @@ -523,8 +523,8 @@ fun interface ProgressConverter { fun convert(progress: Float): Float companion object { - /** Keeps scrolling linearly */ - val Default = linear() + /** Starts linearly with some resistance and slowly approaches to 0.2f */ + val Default = tanh(maxProgress = 0.2f, tilt = 3f) /** * The scroll stays linear, with [factor] you can control how much resistance there is. diff --git a/packages/SystemUI/compose/scene/tests/src/com/android/compose/animation/scene/ElementTest.kt b/packages/SystemUI/compose/scene/tests/src/com/android/compose/animation/scene/ElementTest.kt index 682fe95c66a5..770c0f8dbb8f 100644 --- a/packages/SystemUI/compose/scene/tests/src/com/android/compose/animation/scene/ElementTest.kt +++ b/packages/SystemUI/compose/scene/tests/src/com/android/compose/animation/scene/ElementTest.kt @@ -724,6 +724,7 @@ class ElementTest { layoutHeight = layoutHeight, sceneTransitions = { overscroll(SceneB, Orientation.Vertical) { + progressConverter = ProgressConverter.linear() // On overscroll 100% -> Foo should translate by overscrollTranslateY translate(TestElements.Foo, y = overscrollTranslateY) } @@ -780,6 +781,7 @@ class ElementTest { transitions = transitions { overscroll(SceneB, Orientation.Vertical) { + progressConverter = ProgressConverter.linear() translate(TestElements.Foo, y = overscrollTranslateY) } } @@ -921,6 +923,7 @@ class ElementTest { layoutHeight = layoutHeight, sceneTransitions = { overscroll(SceneB, Orientation.Vertical) { + progressConverter = ProgressConverter.linear() // On overscroll 100% -> Foo should translate by layoutHeight translate(TestElements.Foo, y = { absoluteDistance }) } @@ -1015,7 +1018,7 @@ class ElementTest { layoutHeight = layoutHeight, sceneTransitions = { // Overscroll progress will be linear (by default) - defaultOverscrollProgressConverter = ProgressConverter { it } + defaultOverscrollProgressConverter = ProgressConverter.linear() overscroll(SceneB, Orientation.Vertical) { // This override the defaultOverscrollProgressConverter @@ -1125,6 +1128,7 @@ class ElementTest { ) overscroll(SceneB, Orientation.Vertical) { + progressConverter = ProgressConverter.linear() // On overscroll 100% -> Foo should translate by layoutHeight translate(TestElements.Foo, y = { absoluteDistance }) } @@ -1861,6 +1865,7 @@ class ElementTest { SceneA, transitions { overscroll(SceneB, Orientation.Vertical) { + progressConverter = ProgressConverter.linear() translate(TestElements.Foo, y = 15.dp) } } diff --git a/packages/SystemUI/compose/scene/tests/src/com/android/compose/animation/scene/SwipeToSceneTest.kt b/packages/SystemUI/compose/scene/tests/src/com/android/compose/animation/scene/SwipeToSceneTest.kt index 06799bcda0ef..e48cd81765cb 100644 --- a/packages/SystemUI/compose/scene/tests/src/com/android/compose/animation/scene/SwipeToSceneTest.kt +++ b/packages/SystemUI/compose/scene/tests/src/com/android/compose/animation/scene/SwipeToSceneTest.kt @@ -614,6 +614,7 @@ class SwipeToSceneTest { from(SceneA, to = SceneB) { distance = FixedDistance(swipeDistance) } overscroll(SceneB, Orientation.Vertical) { + progressConverter = ProgressConverter.linear() translate(TestElements.Foo, x = { 20.dp.toPx() }, y = { 30.dp.toPx() }) } } |