Add label for transition
This allows android studio to display more meaningful names for
TransitionAnimations.
Relnote: N/A
BUG: 161364640
Test: Ran unit tests
Change-Id: Id6bb2bbd1f0dc2764595e7d33d9742a9c3f9762e
diff --git a/ui/ui-animation-core/api/0.1.0-dev16.txt b/ui/ui-animation-core/api/0.1.0-dev16.txt
index 6cb7dcd..4c62184 100644
--- a/ui/ui-animation-core/api/0.1.0-dev16.txt
+++ b/ui/ui-animation-core/api/0.1.0-dev16.txt
@@ -365,8 +365,9 @@
}
public final class TransitionAnimation<T> implements androidx.animation.TransitionState {
- ctor public TransitionAnimation(internal androidx.animation.TransitionDefinition<T> def, androidx.animation.AnimationClockObservable clock, T? initState);
+ ctor public TransitionAnimation(internal androidx.animation.TransitionDefinition<T> def, androidx.animation.AnimationClockObservable clock, T? initState, String? label);
method public operator <T, V extends androidx.animation.AnimationVector> T! get(androidx.animation.PropKey<T,V> propKey);
+ method public String? getLabel();
method public kotlin.jvm.functions.Function1<T,kotlin.Unit>? getOnStateChangeFinished();
method public kotlin.jvm.functions.Function0<kotlin.Unit>? getOnUpdate();
method public boolean isRunning();
diff --git a/ui/ui-animation-core/api/current.txt b/ui/ui-animation-core/api/current.txt
index 6cb7dcd..4c62184 100644
--- a/ui/ui-animation-core/api/current.txt
+++ b/ui/ui-animation-core/api/current.txt
@@ -365,8 +365,9 @@
}
public final class TransitionAnimation<T> implements androidx.animation.TransitionState {
- ctor public TransitionAnimation(internal androidx.animation.TransitionDefinition<T> def, androidx.animation.AnimationClockObservable clock, T? initState);
+ ctor public TransitionAnimation(internal androidx.animation.TransitionDefinition<T> def, androidx.animation.AnimationClockObservable clock, T? initState, String? label);
method public operator <T, V extends androidx.animation.AnimationVector> T! get(androidx.animation.PropKey<T,V> propKey);
+ method public String? getLabel();
method public kotlin.jvm.functions.Function1<T,kotlin.Unit>? getOnStateChangeFinished();
method public kotlin.jvm.functions.Function0<kotlin.Unit>? getOnUpdate();
method public boolean isRunning();
diff --git a/ui/ui-animation-core/api/public_plus_experimental_0.1.0-dev16.txt b/ui/ui-animation-core/api/public_plus_experimental_0.1.0-dev16.txt
index 6cb7dcd..4c62184 100644
--- a/ui/ui-animation-core/api/public_plus_experimental_0.1.0-dev16.txt
+++ b/ui/ui-animation-core/api/public_plus_experimental_0.1.0-dev16.txt
@@ -365,8 +365,9 @@
}
public final class TransitionAnimation<T> implements androidx.animation.TransitionState {
- ctor public TransitionAnimation(internal androidx.animation.TransitionDefinition<T> def, androidx.animation.AnimationClockObservable clock, T? initState);
+ ctor public TransitionAnimation(internal androidx.animation.TransitionDefinition<T> def, androidx.animation.AnimationClockObservable clock, T? initState, String? label);
method public operator <T, V extends androidx.animation.AnimationVector> T! get(androidx.animation.PropKey<T,V> propKey);
+ method public String? getLabel();
method public kotlin.jvm.functions.Function1<T,kotlin.Unit>? getOnStateChangeFinished();
method public kotlin.jvm.functions.Function0<kotlin.Unit>? getOnUpdate();
method public boolean isRunning();
diff --git a/ui/ui-animation-core/api/public_plus_experimental_current.txt b/ui/ui-animation-core/api/public_plus_experimental_current.txt
index 6cb7dcd..4c62184 100644
--- a/ui/ui-animation-core/api/public_plus_experimental_current.txt
+++ b/ui/ui-animation-core/api/public_plus_experimental_current.txt
@@ -365,8 +365,9 @@
}
public final class TransitionAnimation<T> implements androidx.animation.TransitionState {
- ctor public TransitionAnimation(internal androidx.animation.TransitionDefinition<T> def, androidx.animation.AnimationClockObservable clock, T? initState);
+ ctor public TransitionAnimation(internal androidx.animation.TransitionDefinition<T> def, androidx.animation.AnimationClockObservable clock, T? initState, String? label);
method public operator <T, V extends androidx.animation.AnimationVector> T! get(androidx.animation.PropKey<T,V> propKey);
+ method public String? getLabel();
method public kotlin.jvm.functions.Function1<T,kotlin.Unit>? getOnStateChangeFinished();
method public kotlin.jvm.functions.Function0<kotlin.Unit>? getOnUpdate();
method public boolean isRunning();
diff --git a/ui/ui-animation-core/api/restricted_0.1.0-dev16.txt b/ui/ui-animation-core/api/restricted_0.1.0-dev16.txt
index 6cb7dcd..4c62184 100644
--- a/ui/ui-animation-core/api/restricted_0.1.0-dev16.txt
+++ b/ui/ui-animation-core/api/restricted_0.1.0-dev16.txt
@@ -365,8 +365,9 @@
}
public final class TransitionAnimation<T> implements androidx.animation.TransitionState {
- ctor public TransitionAnimation(internal androidx.animation.TransitionDefinition<T> def, androidx.animation.AnimationClockObservable clock, T? initState);
+ ctor public TransitionAnimation(internal androidx.animation.TransitionDefinition<T> def, androidx.animation.AnimationClockObservable clock, T? initState, String? label);
method public operator <T, V extends androidx.animation.AnimationVector> T! get(androidx.animation.PropKey<T,V> propKey);
+ method public String? getLabel();
method public kotlin.jvm.functions.Function1<T,kotlin.Unit>? getOnStateChangeFinished();
method public kotlin.jvm.functions.Function0<kotlin.Unit>? getOnUpdate();
method public boolean isRunning();
diff --git a/ui/ui-animation-core/api/restricted_current.txt b/ui/ui-animation-core/api/restricted_current.txt
index 6cb7dcd..4c62184 100644
--- a/ui/ui-animation-core/api/restricted_current.txt
+++ b/ui/ui-animation-core/api/restricted_current.txt
@@ -365,8 +365,9 @@
}
public final class TransitionAnimation<T> implements androidx.animation.TransitionState {
- ctor public TransitionAnimation(internal androidx.animation.TransitionDefinition<T> def, androidx.animation.AnimationClockObservable clock, T? initState);
+ ctor public TransitionAnimation(internal androidx.animation.TransitionDefinition<T> def, androidx.animation.AnimationClockObservable clock, T? initState, String? label);
method public operator <T, V extends androidx.animation.AnimationVector> T! get(androidx.animation.PropKey<T,V> propKey);
+ method public String? getLabel();
method public kotlin.jvm.functions.Function1<T,kotlin.Unit>? getOnStateChangeFinished();
method public kotlin.jvm.functions.Function0<kotlin.Unit>? getOnUpdate();
method public boolean isRunning();
diff --git a/ui/ui-animation-core/src/commonMain/kotlin/androidx/animation/TransitionAnimation.kt b/ui/ui-animation-core/src/commonMain/kotlin/androidx/animation/TransitionAnimation.kt
index 3819229..1c28bd7 100644
--- a/ui/ui-animation-core/src/commonMain/kotlin/androidx/animation/TransitionAnimation.kt
+++ b/ui/ui-animation-core/src/commonMain/kotlin/androidx/animation/TransitionAnimation.kt
@@ -36,13 +36,24 @@
* Once a [TransitionDefinition] is instantiated, a [TransitionAnimation] can be created via
* [TransitionDefinition.createAnimation].
*
+ * @param def Transition definition that defines states and transitions
+ * @param clock Optional animation clock that pulses animations when time changes. By default,
+ * the system uses a choreographer based clock read from the [AnimationClockAmbient].
+ * A custom implementation of the [AnimationClockObservable] (such as a
+ * [androidx.animation.ManualAnimationClock]) can be supplied here if there’s a need to
+ * manually control the clock (for example in tests).
+ * @param initState Optional initial state for the transition. When undefined, the initial state
+ * will be set to the first [toState] seen in the transition.
+ * @param label Optional label for distinguishing different transitions in Android Studio.
+ *
* @see [androidx.ui.animation.transition]
*/
@OptIn(InternalAnimationApi::class)
class TransitionAnimation<T>(
internal val def: TransitionDefinition<T>,
private val clock: AnimationClockObservable,
- initState: T? = null
+ initState: T? = null,
+ val label: String? = null
) : TransitionState {
var onUpdate: (() -> Unit)? = null
diff --git a/ui/ui-animation/api/0.1.0-dev16.txt b/ui/ui-animation/api/0.1.0-dev16.txt
index 0d992d7..bdd1adb 100644
--- a/ui/ui-animation/api/0.1.0-dev16.txt
+++ b/ui/ui-animation/api/0.1.0-dev16.txt
@@ -138,7 +138,7 @@
public final class TransitionKt {
method public static boolean getTransitionsEnabled();
method public static void setTransitionsEnabled(boolean p);
- method @androidx.compose.Composable public static <T> androidx.animation.TransitionState transition(androidx.animation.TransitionDefinition<T> definition, T? toState, androidx.animation.AnimationClockObservable clock = AnimationClockAmbient.current, T? initState = toState, kotlin.jvm.functions.Function1<? super T,kotlin.Unit>? >
+ method @androidx.compose.Composable public static <T> androidx.animation.TransitionState transition(androidx.animation.TransitionDefinition<T> definition, T? toState, androidx.animation.AnimationClockObservable clock = AnimationClockAmbient.current, T? initState = toState, String? label = null, kotlin.jvm.functions.Function1<? super T,kotlin.Unit>? >
}
}
diff --git a/ui/ui-animation/api/current.txt b/ui/ui-animation/api/current.txt
index 0d992d7..bdd1adb 100644
--- a/ui/ui-animation/api/current.txt
+++ b/ui/ui-animation/api/current.txt
@@ -138,7 +138,7 @@
public final class TransitionKt {
method public static boolean getTransitionsEnabled();
method public static void setTransitionsEnabled(boolean p);
- method @androidx.compose.Composable public static <T> androidx.animation.TransitionState transition(androidx.animation.TransitionDefinition<T> definition, T? toState, androidx.animation.AnimationClockObservable clock = AnimationClockAmbient.current, T? initState = toState, kotlin.jvm.functions.Function1<? super T,kotlin.Unit>? >
+ method @androidx.compose.Composable public static <T> androidx.animation.TransitionState transition(androidx.animation.TransitionDefinition<T> definition, T? toState, androidx.animation.AnimationClockObservable clock = AnimationClockAmbient.current, T? initState = toState, String? label = null, kotlin.jvm.functions.Function1<? super T,kotlin.Unit>? >
}
}
diff --git a/ui/ui-animation/api/public_plus_experimental_0.1.0-dev16.txt b/ui/ui-animation/api/public_plus_experimental_0.1.0-dev16.txt
index 0d992d7..bdd1adb 100644
--- a/ui/ui-animation/api/public_plus_experimental_0.1.0-dev16.txt
+++ b/ui/ui-animation/api/public_plus_experimental_0.1.0-dev16.txt
@@ -138,7 +138,7 @@
public final class TransitionKt {
method public static boolean getTransitionsEnabled();
method public static void setTransitionsEnabled(boolean p);
- method @androidx.compose.Composable public static <T> androidx.animation.TransitionState transition(androidx.animation.TransitionDefinition<T> definition, T? toState, androidx.animation.AnimationClockObservable clock = AnimationClockAmbient.current, T? initState = toState, kotlin.jvm.functions.Function1<? super T,kotlin.Unit>? >
+ method @androidx.compose.Composable public static <T> androidx.animation.TransitionState transition(androidx.animation.TransitionDefinition<T> definition, T? toState, androidx.animation.AnimationClockObservable clock = AnimationClockAmbient.current, T? initState = toState, String? label = null, kotlin.jvm.functions.Function1<? super T,kotlin.Unit>? >
}
}
diff --git a/ui/ui-animation/api/public_plus_experimental_current.txt b/ui/ui-animation/api/public_plus_experimental_current.txt
index 0d992d7..bdd1adb 100644
--- a/ui/ui-animation/api/public_plus_experimental_current.txt
+++ b/ui/ui-animation/api/public_plus_experimental_current.txt
@@ -138,7 +138,7 @@
public final class TransitionKt {
method public static boolean getTransitionsEnabled();
method public static void setTransitionsEnabled(boolean p);
- method @androidx.compose.Composable public static <T> androidx.animation.TransitionState transition(androidx.animation.TransitionDefinition<T> definition, T? toState, androidx.animation.AnimationClockObservable clock = AnimationClockAmbient.current, T? initState = toState, kotlin.jvm.functions.Function1<? super T,kotlin.Unit>? >
+ method @androidx.compose.Composable public static <T> androidx.animation.TransitionState transition(androidx.animation.TransitionDefinition<T> definition, T? toState, androidx.animation.AnimationClockObservable clock = AnimationClockAmbient.current, T? initState = toState, String? label = null, kotlin.jvm.functions.Function1<? super T,kotlin.Unit>? >
}
}
diff --git a/ui/ui-animation/api/restricted_0.1.0-dev16.txt b/ui/ui-animation/api/restricted_0.1.0-dev16.txt
index 0d992d7..bdd1adb 100644
--- a/ui/ui-animation/api/restricted_0.1.0-dev16.txt
+++ b/ui/ui-animation/api/restricted_0.1.0-dev16.txt
@@ -138,7 +138,7 @@
public final class TransitionKt {
method public static boolean getTransitionsEnabled();
method public static void setTransitionsEnabled(boolean p);
- method @androidx.compose.Composable public static <T> androidx.animation.TransitionState transition(androidx.animation.TransitionDefinition<T> definition, T? toState, androidx.animation.AnimationClockObservable clock = AnimationClockAmbient.current, T? initState = toState, kotlin.jvm.functions.Function1<? super T,kotlin.Unit>? >
+ method @androidx.compose.Composable public static <T> androidx.animation.TransitionState transition(androidx.animation.TransitionDefinition<T> definition, T? toState, androidx.animation.AnimationClockObservable clock = AnimationClockAmbient.current, T? initState = toState, String? label = null, kotlin.jvm.functions.Function1<? super T,kotlin.Unit>? >
}
}
diff --git a/ui/ui-animation/api/restricted_current.txt b/ui/ui-animation/api/restricted_current.txt
index 0d992d7..bdd1adb 100644
--- a/ui/ui-animation/api/restricted_current.txt
+++ b/ui/ui-animation/api/restricted_current.txt
@@ -138,7 +138,7 @@
public final class TransitionKt {
method public static boolean getTransitionsEnabled();
method public static void setTransitionsEnabled(boolean p);
- method @androidx.compose.Composable public static <T> androidx.animation.TransitionState transition(androidx.animation.TransitionDefinition<T> definition, T? toState, androidx.animation.AnimationClockObservable clock = AnimationClockAmbient.current, T? initState = toState, kotlin.jvm.functions.Function1<? super T,kotlin.Unit>? >
+ method @androidx.compose.Composable public static <T> androidx.animation.TransitionState transition(androidx.animation.TransitionDefinition<T> definition, T? toState, androidx.animation.AnimationClockObservable clock = AnimationClockAmbient.current, T? initState = toState, String? label = null, kotlin.jvm.functions.Function1<? super T,kotlin.Unit>? >
}
}
diff --git a/ui/ui-animation/src/commonMain/kotlin/androidx/ui/animation/LegacyTransition.kt b/ui/ui-animation/src/commonMain/kotlin/androidx/ui/animation/LegacyTransition.kt
index 322e3e0..49e3e96 100644
--- a/ui/ui-animation/src/commonMain/kotlin/androidx/ui/animation/LegacyTransition.kt
+++ b/ui/ui-animation/src/commonMain/kotlin/androidx/ui/animation/LegacyTransition.kt
@@ -62,7 +62,7 @@
@Deprecated("Transition has been renamed to transition, which returns a TransitionState instead " +
"of passing it to children",
replaceWith = ReplaceWith(
- "transition(definition, toState, clock, initState, onStateChangeFinished)",
+ "transition(definition, toState, clock, initState, null, onStateChangeFinished)",
"androidx.ui.animation.transition"))
@Composable
fun <T> Transition(
@@ -73,6 +73,6 @@
onStateChangeFinished: ((T) -> Unit)? = null,
children: @Composable (state: TransitionState) -> Unit
) {
- val state = transition(definition, toState, clock, initState, onStateChangeFinished)
+ val state = transition(definition, toState, clock, initState, null, onStateChangeFinished)
children(state)
}
\ No newline at end of file
diff --git a/ui/ui-animation/src/commonMain/kotlin/androidx/ui/animation/Transition.kt b/ui/ui-animation/src/commonMain/kotlin/androidx/ui/animation/Transition.kt
index 2b6e100..21707c5 100644
--- a/ui/ui-animation/src/commonMain/kotlin/androidx/ui/animation/Transition.kt
+++ b/ui/ui-animation/src/commonMain/kotlin/androidx/ui/animation/Transition.kt
@@ -22,7 +22,6 @@
import androidx.animation.TransitionAnimation
import androidx.animation.TransitionDefinition
import androidx.animation.TransitionState
-import androidx.animation.createAnimation
import androidx.compose.Composable
import androidx.compose.Stable
import androidx.compose.getValue
@@ -61,6 +60,7 @@
* manually control the clock (for example in tests).
* @param initState Optional initial state for the transition. When undefined, the initial state
* will be set to the first [toState] seen in the transition.
+ * @param label Optional label for distinguishing different transitions in Android Studio.
* @param onStateChangeFinished An optional listener to get notified when state change animation
* has completed
*
@@ -75,12 +75,13 @@
toState: T,
clock: AnimationClockObservable = AnimationClockAmbient.current,
initState: T = toState,
+ label: String? = null,
onStateChangeFinished: ((T) -> Unit)? = null
): TransitionState {
if (transitionsEnabled) {
val disposableClock = clock.asDisposableClock()
val model = remember(definition, disposableClock) {
- TransitionModel(definition, initState, disposableClock)
+ TransitionModel(definition, initState, disposableClock, label)
}
model.anim.>
@@ -107,12 +108,13 @@
private class TransitionModel<T>(
transitionDef: TransitionDefinition<T>,
initState: T,
- clock: AnimationClockObservable
+ clock: AnimationClockObservable,
+ label: String?
) : TransitionState {
private var animationPulse by mutableStateOf(0L)
internal val anim: TransitionAnimation<T> =
- transitionDef.createAnimation(clock, initState).apply {
+ TransitionAnimation(transitionDef, clock, initState, label).apply {
>
animationPulse++
}