summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--packages/SystemUI/src/com/android/systemui/inputdevice/tutorial/ui/composable/ActionTutorialContent.kt74
-rw-r--r--packages/SystemUI/src/com/android/systemui/inputdevice/tutorial/ui/composable/TutorialAnimation.kt7
2 files changed, 58 insertions, 23 deletions
diff --git a/packages/SystemUI/src/com/android/systemui/inputdevice/tutorial/ui/composable/ActionTutorialContent.kt b/packages/SystemUI/src/com/android/systemui/inputdevice/tutorial/ui/composable/ActionTutorialContent.kt
index 3d2baee9b936..edc7c1d6361f 100644
--- a/packages/SystemUI/src/com/android/systemui/inputdevice/tutorial/ui/composable/ActionTutorialContent.kt
+++ b/packages/SystemUI/src/com/android/systemui/inputdevice/tutorial/ui/composable/ActionTutorialContent.kt
@@ -16,8 +16,8 @@
package com.android.systemui.inputdevice.tutorial.ui.composable
+import android.content.res.Configuration
import androidx.annotation.RawRes
-import androidx.annotation.StringRes
import androidx.compose.animation.AnimatedVisibility
import androidx.compose.animation.fadeIn
import androidx.compose.foundation.background
@@ -36,6 +36,7 @@ import androidx.compose.material3.Text
import androidx.compose.runtime.Composable
import androidx.compose.ui.Modifier
import androidx.compose.ui.graphics.Color
+import androidx.compose.ui.platform.LocalConfiguration
import androidx.compose.ui.res.stringResource
import androidx.compose.ui.unit.dp
import com.android.systemui.inputdevice.tutorial.ui.composable.TutorialActionState.Finished
@@ -66,23 +67,13 @@ fun ActionTutorialContent(
.safeDrawingPadding()
.padding(start = 48.dp, top = 100.dp, end = 48.dp, bottom = 8.dp),
) {
- Row(modifier = Modifier.fillMaxWidth().weight(1f)) {
- TutorialDescription(
- titleTextId =
- if (actionState is Finished) config.strings.titleSuccessResId
- else config.strings.titleResId,
- titleColor = config.colors.title,
- bodyTextId =
- if (actionState is Finished) config.strings.bodySuccessResId
- else config.strings.bodyResId,
- modifier = Modifier.weight(1f),
- )
- Spacer(modifier = Modifier.width(76.dp))
- TutorialAnimation(
- actionState,
- config,
- modifier = Modifier.weight(1f).padding(top = 8.dp),
- )
+ when (LocalConfiguration.current.orientation) {
+ Configuration.ORIENTATION_LANDSCAPE -> {
+ HorizontalDescriptionAndAnimation(actionState, config, Modifier.weight(1f))
+ }
+ else -> {
+ VerticalDescriptionAndAnimation(actionState, config, Modifier.weight(1f))
+ }
}
AnimatedVisibility(visible = actionState is Finished, enter = fadeIn()) {
DoneButton(onDoneButtonClicked = onDoneButtonClicked)
@@ -91,17 +82,56 @@ fun ActionTutorialContent(
}
@Composable
+private fun HorizontalDescriptionAndAnimation(
+ actionState: TutorialActionState,
+ config: TutorialScreenConfig,
+ modifier: Modifier = Modifier,
+) {
+ Row(modifier = modifier.fillMaxWidth()) {
+ TutorialDescription(actionState, config, modifier = Modifier.weight(1f))
+ Spacer(modifier = Modifier.width(70.dp))
+ TutorialAnimation(actionState, config, modifier = Modifier.weight(1f))
+ }
+}
+
+@Composable
+private fun VerticalDescriptionAndAnimation(
+ actionState: TutorialActionState,
+ config: TutorialScreenConfig,
+ modifier: Modifier = Modifier,
+) {
+ Column(modifier = modifier.fillMaxWidth().padding(horizontal = 40.dp, vertical = 40.dp)) {
+ Spacer(modifier = Modifier.weight(0.1f))
+ TutorialDescription(
+ actionState,
+ config,
+ modifier =
+ Modifier.weight(0.2f)
+ // extra padding to better align with animation which has embedded padding
+ .padding(horizontal = 15.dp),
+ )
+ Spacer(modifier = Modifier.width(70.dp))
+ TutorialAnimation(actionState, config, modifier = Modifier.weight(1f))
+ }
+}
+
+@Composable
fun TutorialDescription(
- @StringRes titleTextId: Int,
- titleColor: Color,
- @StringRes bodyTextId: Int,
+ actionState: TutorialActionState,
+ config: TutorialScreenConfig,
modifier: Modifier = Modifier,
) {
+ val (titleTextId, bodyTextId) =
+ if (actionState is Finished) {
+ config.strings.titleSuccessResId to config.strings.bodySuccessResId
+ } else {
+ config.strings.titleResId to config.strings.bodyResId
+ }
Column(verticalArrangement = Arrangement.Top, modifier = modifier) {
Text(
text = stringResource(id = titleTextId),
style = MaterialTheme.typography.displayLarge,
- color = titleColor,
+ color = config.colors.title,
)
Spacer(modifier = Modifier.height(16.dp))
Text(
diff --git a/packages/SystemUI/src/com/android/systemui/inputdevice/tutorial/ui/composable/TutorialAnimation.kt b/packages/SystemUI/src/com/android/systemui/inputdevice/tutorial/ui/composable/TutorialAnimation.kt
index 720c01fc7056..2be619bac998 100644
--- a/packages/SystemUI/src/com/android/systemui/inputdevice/tutorial/ui/composable/TutorialAnimation.kt
+++ b/packages/SystemUI/src/com/android/systemui/inputdevice/tutorial/ui/composable/TutorialAnimation.kt
@@ -24,11 +24,13 @@ import androidx.compose.animation.core.tween
import androidx.compose.animation.fadeOut
import androidx.compose.animation.togetherWith
import androidx.compose.foundation.layout.Box
+import androidx.compose.foundation.layout.fillMaxSize
import androidx.compose.foundation.layout.fillMaxWidth
import androidx.compose.runtime.Composable
import androidx.compose.runtime.getValue
import androidx.compose.runtime.remember
import androidx.compose.runtime.saveable.rememberSaveable
+import androidx.compose.ui.Alignment
import androidx.compose.ui.Modifier
import androidx.compose.ui.node.Ref
import androidx.compose.ui.util.lerp
@@ -49,7 +51,7 @@ fun TutorialAnimation(
config: TutorialScreenConfig,
modifier: Modifier = Modifier,
) {
- Box(modifier = modifier.fillMaxWidth()) {
+ Box(contentAlignment = Alignment.Center, modifier = modifier.fillMaxWidth()) {
AnimatedContent(
targetState = actionState::class,
transitionSpec = {
@@ -97,6 +99,7 @@ private fun EducationAnimation(
composition = composition,
progress = { progress },
dynamicProperties = animationProperties,
+ modifier = Modifier.fillMaxSize(),
)
}
@@ -112,6 +115,7 @@ private fun SuccessAnimation(
composition = composition,
progress = { progress },
dynamicProperties = animationProperties,
+ modifier = Modifier.fillMaxSize(),
)
}
@@ -142,6 +146,7 @@ private fun InProgressAnimation(
composition = composition,
progress = { lerp(start = startProgress, stop = endProgress, fraction = progress) },
dynamicProperties = animationProperties,
+ modifier = Modifier.fillMaxSize(),
)
}