diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml
index c8f6e0fe..b5a5dded 100644
--- a/app/src/main/AndroidManifest.xml
+++ b/app/src/main/AndroidManifest.xml
@@ -99,12 +99,8 @@
-
-
-
Boolean)? = null,
+ onMove: ((SpatialMoveEvent) -> Unit)? = null,
content:
@SubspaceComposable @Composable
SpatialBoxScope.() -> Unit,
@@ -72,7 +73,7 @@ fun BackgroundSubspace(
aspectRatio: Float,
@DrawableRes drawable: Int,
minimumHeight: Dp,
- onMove: ((SpatialMoveEvent) -> Boolean)? = null,
+ onMove: ((SpatialMoveEvent) -> Unit)? = null,
content:
@SubspaceComposable @Composable
SpatialBoxScope.() -> Unit,
@@ -81,8 +82,14 @@ fun BackgroundSubspace(
SpatialPanel(
SubspaceModifier
.fillMaxWidth()
- .aspectRatio(aspectRatio),
- dragPolicy = MovePolicy(onMove = onMove),
+ .aspectRatio(aspectRatio)
+ .let { modifier ->
+ if (onMove != null) {
+ modifier.movable(onMove = onMove)
+ } else {
+ modifier.transformingMovable()
+ }
+ },
resizePolicy = ResizePolicy(
minimumSize = DpVolumeSize(0.dp, minimumHeight, 0.dp),
shouldMaintainAspectRatio = true,
diff --git a/feature/camera/src/main/java/com/android/developers/androidify/camera/CameraScreen.kt b/feature/camera/src/main/java/com/android/developers/androidify/camera/CameraScreen.kt
index 2c78626b..838ac5d4 100644
--- a/feature/camera/src/main/java/com/android/developers/androidify/camera/CameraScreen.kt
+++ b/feature/camera/src/main/java/com/android/developers/androidify/camera/CameraScreen.kt
@@ -56,7 +56,7 @@ import androidx.compose.ui.text.style.TextAlign
import androidx.compose.ui.unit.dp
import androidx.graphics.shapes.RoundedPolygon
import androidx.graphics.shapes.rectangle
-import androidx.hilt.navigation.compose.hiltViewModel
+import androidx.hilt.lifecycle.viewmodel.compose.hiltViewModel
import androidx.lifecycle.compose.LifecycleStartEffect
import androidx.lifecycle.compose.collectAsStateWithLifecycle
import androidx.window.layout.FoldingFeature
diff --git a/feature/camera/src/main/java/com/android/developers/androidify/camera/CameraViewfinder.kt b/feature/camera/src/main/java/com/android/developers/androidify/camera/CameraViewfinder.kt
index 475a7f45..49070e72 100644
--- a/feature/camera/src/main/java/com/android/developers/androidify/camera/CameraViewfinder.kt
+++ b/feature/camera/src/main/java/com/android/developers/androidify/camera/CameraViewfinder.kt
@@ -69,7 +69,7 @@ internal fun CameraViewfinder(
}
.transformable(
rememberTransformableState(
- onTransformation = { zoomChange, _, _ ->
+ onTransformation = { _, zoomChange, _, _ ->
onScaleCurrentZoom(zoomChange)
},
),
diff --git a/feature/camera/src/main/java/com/android/developers/androidify/camera/CameraZoomToolbar.kt b/feature/camera/src/main/java/com/android/developers/androidify/camera/CameraZoomToolbar.kt
index 3fa0b84d..de4837f2 100644
--- a/feature/camera/src/main/java/com/android/developers/androidify/camera/CameraZoomToolbar.kt
+++ b/feature/camera/src/main/java/com/android/developers/androidify/camera/CameraZoomToolbar.kt
@@ -78,35 +78,41 @@ internal fun ZoomToolbar(
}
}
}
- val textMeasurer = rememberTextMeasurer()
ButtonGroup(
+ overflowIndicator = {},
modifier = modifier,
horizontalArrangement = Arrangement.spacedBy(ButtonGroupDefaults.ConnectedSpaceBetween),
expandedRatio = 0f,
) {
- ToggleButton(
- checked = selectedOptionIndex == 0,
- onCheckedChange = { onZoomLevelSelected(defaultZoomOptions[0]) },
- shapes = ButtonGroupDefaults.connectedLeadingButtonShapes(),
- colors = ToggleButtonDefaults.toggleButtonColors(),
- modifier = Modifier,
- ) {
- val textLayoutResult = textMeasurer.measure("M.MX", LocalTextStyle.current)
- val width = with(LocalDensity.current) { textLayoutResult.size.width.toDp() }
- Text(options[0], Modifier.widthIn(min = width), textAlign = TextAlign.Center)
- }
- ToggleButton(
- checked = selectedOptionIndex == 1,
- onCheckedChange = { onZoomLevelSelected(defaultZoomOptions[1]) },
- shapes = ButtonGroupDefaults.connectedTrailingButtonShapes(),
- colors = ToggleButtonDefaults.toggleButtonColors(),
- modifier = Modifier,
- ) {
- val textLayoutResult = textMeasurer.measure("M.MX", LocalTextStyle.current)
- val width = with(LocalDensity.current) { textLayoutResult.size.width.toDp() }
- Text(options[1], Modifier.widthIn(min = width), textAlign = TextAlign.Center)
- }
+ customItem(
+ buttonGroupContent = {
+ ToggleButton(
+ checked = selectedOptionIndex == 0,
+ onCheckedChange = { onZoomLevelSelected(defaultZoomOptions[0]) },
+ shapes = ButtonGroupDefaults.connectedLeadingButtonShapes(),
+ colors = ToggleButtonDefaults.toggleButtonColors(),
+ modifier = Modifier,
+ ) {
+ Text(options[0], Modifier, textAlign = TextAlign.Center)
+ }
+ },
+ menuContent = {},
+ )
+ customItem(
+ buttonGroupContent = {
+ ToggleButton(
+ checked = selectedOptionIndex == 1,
+ onCheckedChange = { onZoomLevelSelected(defaultZoomOptions[1]) },
+ shapes = ButtonGroupDefaults.connectedTrailingButtonShapes(),
+ colors = ToggleButtonDefaults.toggleButtonColors(),
+ modifier = Modifier,
+ ) {
+ Text(options[1], Modifier, textAlign = TextAlign.Center)
+ }
+ },
+ menuContent = {},
+ )
}
}
diff --git a/feature/camera/src/main/java/com/android/developers/androidify/camera/xr/CameraLayoutSpatial.kt b/feature/camera/src/main/java/com/android/developers/androidify/camera/xr/CameraLayoutSpatial.kt
index 81bb8bea..8099e4bc 100644
--- a/feature/camera/src/main/java/com/android/developers/androidify/camera/xr/CameraLayoutSpatial.kt
+++ b/feature/camera/src/main/java/com/android/developers/androidify/camera/xr/CameraLayoutSpatial.kt
@@ -26,14 +26,14 @@ import androidx.compose.runtime.Composable
import androidx.compose.ui.Alignment
import androidx.compose.ui.Modifier
import androidx.compose.ui.unit.dp
-import androidx.xr.compose.spatial.ContentEdge
import androidx.xr.compose.spatial.Orbiter
-import androidx.xr.compose.spatial.OrbiterOffsetType
+import androidx.xr.compose.spatial.OrbiterAnchorPoint
import androidx.xr.compose.spatial.Subspace
import androidx.xr.compose.subspace.SpatialPanel
import androidx.xr.compose.subspace.layout.SubspaceModifier
import androidx.xr.compose.subspace.layout.aspectRatio
import androidx.xr.compose.subspace.layout.fillMaxSize
+import androidx.xr.compose.unit.DpVolumeOffset
import com.android.developers.androidify.xr.MainPanelWorkaround
import com.android.developers.androidify.xr.RequestHomeSpaceIconButton
@@ -55,10 +55,8 @@ fun CameraLayoutSpatial(
.aspectRatio(surfaceAspectRatio),
) {
Orbiter(
- position = ContentEdge.Top,
- offsetType = OrbiterOffsetType.InnerEdge,
- offset = 32.dp,
- alignment = Alignment.End,
+ anchorPoint = OrbiterAnchorPoint.TopEnd,
+ offset = DpVolumeOffset(x = (-32).dp, y = (-32).dp),
) {
RequestHomeSpaceIconButton(
modifier = Modifier
@@ -69,13 +67,19 @@ fun CameraLayoutSpatial(
),
)
}
- Orbiter(ContentEdge.Start, offsetType = OrbiterOffsetType.InnerEdge, offset = 16.dp) {
+ Orbiter(
+ anchorPoint = OrbiterAnchorPoint.Start,
+ offset = DpVolumeOffset(x = 16.dp),
+ ) {
Column(horizontalAlignment = Alignment.CenterHorizontally) {
captureButton(Modifier)
flipCameraButton(Modifier)
}
}
- Orbiter(ContentEdge.Bottom, offsetType = OrbiterOffsetType.InnerEdge) {
+ Orbiter(
+ anchorPoint = OrbiterAnchorPoint.Bottom,
+ offset = DpVolumeOffset(y = 16.dp),
+ ) {
zoomButton(Modifier)
}
Box(Modifier.fillMaxSize()) {
diff --git a/feature/creation/src/main/java/com/android/developers/androidify/creation/EditScreenCompact.kt b/feature/creation/src/main/java/com/android/developers/androidify/creation/EditScreenCompact.kt
index dd11a2d8..17db1fea 100644
--- a/feature/creation/src/main/java/com/android/developers/androidify/creation/EditScreenCompact.kt
+++ b/feature/creation/src/main/java/com/android/developers/androidify/creation/EditScreenCompact.kt
@@ -44,8 +44,9 @@ import androidx.compose.material3.ExperimentalMaterial3Api
import androidx.compose.material3.ExperimentalMaterial3ExpressiveApi
import androidx.compose.material3.MaterialTheme
import androidx.compose.material3.ModalBottomSheet
+import androidx.compose.material3.SheetValue
import androidx.compose.material3.SnackbarHostState
-import androidx.compose.material3.rememberModalBottomSheetState
+import androidx.compose.material3.rememberBottomSheetState
import androidx.compose.runtime.Composable
import androidx.compose.runtime.getValue
import androidx.compose.runtime.mutableStateOf
@@ -134,7 +135,10 @@ private fun BotColorPickerBottomSheet(
listBotColors: List,
selectedBotColor: BotColor,
) {
- val sheetState = rememberModalBottomSheetState(skipPartiallyExpanded = true)
+ val sheetState = rememberBottomSheetState(
+ initialValue = SheetValue.Hidden,
+ enabledValues = setOf(SheetValue.Hidden, SheetValue.Expanded),
+ )
if (showColorPickerBottomSheet) {
ModalBottomSheet(
modifier = Modifier,
diff --git a/feature/creation/src/main/java/com/android/developers/androidify/creation/xr/EditScreenSpatial.kt b/feature/creation/src/main/java/com/android/developers/androidify/creation/xr/EditScreenSpatial.kt
index b3628c3f..09bfee5f 100644
--- a/feature/creation/src/main/java/com/android/developers/androidify/creation/xr/EditScreenSpatial.kt
+++ b/feature/creation/src/main/java/com/android/developers/androidify/creation/xr/EditScreenSpatial.kt
@@ -26,12 +26,11 @@ import androidx.compose.foundation.layout.padding
import androidx.compose.material3.MaterialTheme
import androidx.compose.material3.SnackbarHostState
import androidx.compose.runtime.Composable
-import androidx.compose.ui.Alignment
import androidx.compose.ui.Modifier
import androidx.compose.ui.res.stringResource
import androidx.compose.ui.unit.dp
-import androidx.xr.compose.spatial.ContentEdge
import androidx.xr.compose.spatial.Orbiter
+import androidx.xr.compose.spatial.OrbiterAnchorPoint
import androidx.xr.compose.subspace.SpatialColumn
import androidx.xr.compose.subspace.SpatialPanel
import androidx.xr.compose.subspace.SpatialRow
@@ -41,6 +40,7 @@ import androidx.xr.compose.subspace.layout.fillMaxHeight
import androidx.xr.compose.subspace.layout.fillMaxWidth
import androidx.xr.compose.subspace.layout.offset
import androidx.xr.compose.subspace.layout.width
+import androidx.xr.compose.unit.DpVolumeOffset
import com.android.developers.androidify.creation.AndroidBotColorPicker
import com.android.developers.androidify.creation.BotColor
import com.android.developers.androidify.creation.CreationState
@@ -165,9 +165,8 @@ fun EditScreenSpatial(
}
Orbiter(
- position = ContentEdge.Bottom,
- alignment = Alignment.End,
- offset = 16.dp,
+ anchorPoint = OrbiterAnchorPoint.BottomEnd,
+ offset = DpVolumeOffset(x = (-16).dp, y = (-16).dp),
) {
TransformButton(
buttonText = stringResource(CreationR.string.start_transformation_button),
diff --git a/feature/creation/src/main/java/com/android/developers/androidify/creation/xr/LoadingScreenSpatial.kt b/feature/creation/src/main/java/com/android/developers/androidify/creation/xr/LoadingScreenSpatial.kt
index 9b315282..baacf8b4 100644
--- a/feature/creation/src/main/java/com/android/developers/androidify/creation/xr/LoadingScreenSpatial.kt
+++ b/feature/creation/src/main/java/com/android/developers/androidify/creation/xr/LoadingScreenSpatial.kt
@@ -27,14 +27,14 @@ import androidx.compose.ui.Alignment
import androidx.compose.ui.Modifier
import androidx.compose.ui.graphics.Color
import androidx.compose.ui.unit.dp
-import androidx.xr.compose.spatial.ContentEdge
import androidx.xr.compose.spatial.Orbiter
-import androidx.xr.compose.spatial.OrbiterOffsetType
+import androidx.xr.compose.spatial.OrbiterAnchorPoint
import androidx.xr.compose.subspace.SpatialPanel
import androidx.xr.compose.subspace.layout.SubspaceModifier
import androidx.xr.compose.subspace.layout.fillMaxHeight
import androidx.xr.compose.subspace.layout.fillMaxWidth
import androidx.xr.compose.subspace.layout.offset
+import androidx.xr.compose.unit.DpVolumeOffset
import com.android.developers.androidify.creation.LoadingScreenContents
import com.android.developers.androidify.creation.LoadingScreenScaffold
import com.android.developers.androidify.theme.AndroidifyTheme
@@ -59,10 +59,8 @@ fun LoadingScreenSpatial(
drawable = CreationR.drawable.squiggle_light,
) {
Orbiter(
- position = ContentEdge.Top,
- offsetType = OrbiterOffsetType.OuterEdge,
- offset = 32.dp,
- alignment = Alignment.End,
+ anchorPoint = OrbiterAnchorPoint.TopEnd,
+ offset = DpVolumeOffset(x = (-32).dp, y = 32.dp),
) {
RequestHomeSpaceIconButton(
modifier = Modifier
diff --git a/feature/home/src/main/java/com/android/developers/androidify/home/AboutScreen.kt b/feature/home/src/main/java/com/android/developers/androidify/home/AboutScreen.kt
index dda11140..1ec7ac63 100644
--- a/feature/home/src/main/java/com/android/developers/androidify/home/AboutScreen.kt
+++ b/feature/home/src/main/java/com/android/developers/androidify/home/AboutScreen.kt
@@ -55,7 +55,7 @@ import androidx.compose.ui.text.TextStyle
import androidx.compose.ui.text.font.FontWeight
import androidx.compose.ui.tooling.preview.Preview
import androidx.compose.ui.unit.dp
-import androidx.hilt.navigation.compose.hiltViewModel
+import androidx.hilt.lifecycle.viewmodel.compose.hiltViewModel
import androidx.lifecycle.compose.collectAsStateWithLifecycle
import androidx.navigation3.ui.LocalNavAnimatedContentScope
import androidx.xr.compose.platform.LocalSpatialCapabilities
diff --git a/feature/home/src/main/java/com/android/developers/androidify/home/HomeScreen.kt b/feature/home/src/main/java/com/android/developers/androidify/home/HomeScreen.kt
index 370a849f..3343a4bf 100644
--- a/feature/home/src/main/java/com/android/developers/androidify/home/HomeScreen.kt
+++ b/feature/home/src/main/java/com/android/developers/androidify/home/HomeScreen.kt
@@ -24,7 +24,7 @@ import androidx.compose.material3.ExperimentalMaterial3ExpressiveApi
import androidx.compose.runtime.Composable
import androidx.compose.ui.Modifier
import androidx.compose.ui.unit.IntOffset
-import androidx.hilt.navigation.compose.hiltViewModel
+import androidx.hilt.lifecycle.viewmodel.compose.hiltViewModel
import androidx.lifecycle.compose.collectAsStateWithLifecycle
import com.android.developers.androidify.home.xr.HomeScreenContentsSpatial
import com.android.developers.androidify.theme.SharedElementContextPreview
diff --git a/feature/home/src/main/java/com/android/developers/androidify/home/xr/AboutScreenSpatial.kt b/feature/home/src/main/java/com/android/developers/androidify/home/xr/AboutScreenSpatial.kt
index 759bb33d..83d3092a 100644
--- a/feature/home/src/main/java/com/android/developers/androidify/home/xr/AboutScreenSpatial.kt
+++ b/feature/home/src/main/java/com/android/developers/androidify/home/xr/AboutScreenSpatial.kt
@@ -19,13 +19,12 @@ import androidx.compose.foundation.background
import androidx.compose.foundation.layout.PaddingValues
import androidx.compose.material3.MaterialTheme
import androidx.compose.runtime.Composable
-import androidx.compose.ui.Alignment
import androidx.compose.ui.Modifier
import androidx.compose.ui.unit.dp
-import androidx.xr.compose.spatial.ContentEdge
import androidx.xr.compose.spatial.Orbiter
-import androidx.xr.compose.spatial.OrbiterOffsetType
+import androidx.xr.compose.spatial.OrbiterAnchorPoint
import androidx.xr.compose.subspace.SpatialPanel
+import androidx.xr.compose.unit.DpVolumeOffset
import com.android.developers.androidify.home.AboutScreenMedium
import com.android.developers.androidify.home.BackButton
import com.android.developers.androidify.xr.MainPanelWorkaround
@@ -37,10 +36,8 @@ fun AboutScreenSpatial(onBackPressed: () -> Unit, bottomButtons: @Composable ()
SquiggleBackgroundSubspace(500.dp) {
SpatialPanel {
Orbiter(
- ContentEdge.Top,
- offset = 16.dp,
- offsetType = OrbiterOffsetType.InnerEdge,
- alignment = Alignment.Start,
+ anchorPoint = OrbiterAnchorPoint.TopStart,
+ offset = DpVolumeOffset(x = 16.dp, y = (-16).dp),
) {
BackButton(onBackPressed)
}
@@ -50,10 +47,8 @@ fun AboutScreenSpatial(onBackPressed: () -> Unit, bottomButtons: @Composable ()
bottomButtons = null,
)
Orbiter(
- position = ContentEdge.Bottom,
- offset = 48.dp,
- offsetType = OrbiterOffsetType.InnerEdge,
- elevation = 0.dp,
+ anchorPoint = OrbiterAnchorPoint.Bottom,
+ offset = DpVolumeOffset(y = 48.dp, z = 0.dp),
) {
bottomButtons()
}
diff --git a/feature/home/src/main/java/com/android/developers/androidify/home/xr/HomeScreenSpatial.kt b/feature/home/src/main/java/com/android/developers/androidify/home/xr/HomeScreenSpatial.kt
index 7f54dd1a..b58a2e0d 100644
--- a/feature/home/src/main/java/com/android/developers/androidify/home/xr/HomeScreenSpatial.kt
+++ b/feature/home/src/main/java/com/android/developers/androidify/home/xr/HomeScreenSpatial.kt
@@ -36,10 +36,8 @@ import androidx.compose.ui.Modifier
import androidx.compose.ui.layout.onLayoutRectChanged
import androidx.compose.ui.unit.IntOffset
import androidx.compose.ui.unit.dp
-import androidx.xr.compose.spatial.ContentEdge
import androidx.xr.compose.spatial.Orbiter
-import androidx.xr.compose.spatial.OrbiterOffsetType
-import androidx.xr.compose.subspace.MovePolicy
+import androidx.xr.compose.spatial.OrbiterAnchorPoint
import androidx.xr.compose.subspace.ResizePolicy
import androidx.xr.compose.subspace.SpatialPanel
import androidx.xr.compose.subspace.layout.SpatialAlignment
@@ -50,6 +48,8 @@ import androidx.xr.compose.subspace.layout.fillMaxSize
import androidx.xr.compose.subspace.layout.fillMaxWidth
import androidx.xr.compose.subspace.layout.offset
import androidx.xr.compose.subspace.layout.rotate
+import androidx.xr.compose.subspace.layout.transformingMovable
+import androidx.xr.compose.unit.DpVolumeOffset
import com.android.developers.androidify.home.HomePageButton
import com.android.developers.androidify.home.MainHomeContent
import com.android.developers.androidify.home.VideoPlayer
@@ -73,10 +73,8 @@ fun HomeScreenContentsSpatial(
MainPanelWorkaround()
SquiggleBackgroundSubspace(minimumHeight = 600.dp) {
Orbiter(
- position = ContentEdge.Top,
- offsetType = OrbiterOffsetType.OuterEdge,
- offset = 32.dp,
- alignment = Alignment.End,
+ anchorPoint = OrbiterAnchorPoint.TopEnd,
+ offset = DpVolumeOffset(x = (-32).dp, y = 32.dp),
) {
RequestHomeSpaceIconButton(
modifier = Modifier
@@ -97,9 +95,9 @@ fun HomeScreenContentsSpatial(
.aspectRatio(0.77f)
.align(SpatialAlignment.CenterEnd)
.offset(z = 10.dp)
- .rotate(0f, 0f, 5f),
+ .rotate(0f, 0f, 5f)
+ .transformingMovable(),
resizePolicy = ResizePolicy(shouldMaintainAspectRatio = true),
- dragPolicy = MovePolicy(),
) {
VideoPlayer(videoLink)
}
diff --git a/feature/results/src/main/java/com/android/developers/androidify/customize/CustomizeExportScreen.kt b/feature/results/src/main/java/com/android/developers/androidify/customize/CustomizeExportScreen.kt
index 46213581..99518485 100644
--- a/feature/results/src/main/java/com/android/developers/androidify/customize/CustomizeExportScreen.kt
+++ b/feature/results/src/main/java/com/android/developers/androidify/customize/CustomizeExportScreen.kt
@@ -43,11 +43,12 @@ import androidx.compose.material3.ExperimentalMaterial3ExpressiveApi
import androidx.compose.material3.Icon
import androidx.compose.material3.MaterialTheme
import androidx.compose.material3.Scaffold
+import androidx.compose.material3.SheetValue
import androidx.compose.material3.Snackbar
import androidx.compose.material3.SnackbarDefaults
import androidx.compose.material3.SnackbarHost
import androidx.compose.material3.SnackbarHostState
-import androidx.compose.material3.rememberModalBottomSheetState
+import androidx.compose.material3.rememberBottomSheetState
import androidx.compose.runtime.Composable
import androidx.compose.runtime.CompositionLocalProvider
import androidx.compose.runtime.LaunchedEffect
@@ -162,8 +163,9 @@ private fun CustomizeExportContents(
onWatchFaceSelect: (WatchFaceAsset) -> Unit,
) {
var showWatchFaceBottomSheet by remember { mutableStateOf(false) }
- val watchFaceSheetState = rememberModalBottomSheetState(
- skipPartiallyExpanded = true,
+ val watchFaceSheetState = rememberBottomSheetState(
+ initialValue = SheetValue.Hidden,
+ enabledValues = setOf(SheetValue.Hidden, SheetValue.Expanded),
)
val imageResult = remember(state.showImageEditProgress) {
movableContentWithReceiverOf {
diff --git a/feature/results/src/main/java/com/android/developers/androidify/customize/watchface/WatchFaceModalSheet.kt b/feature/results/src/main/java/com/android/developers/androidify/customize/watchface/WatchFaceModalSheet.kt
index 027907d1..d6011ac6 100644
--- a/feature/results/src/main/java/com/android/developers/androidify/customize/watchface/WatchFaceModalSheet.kt
+++ b/feature/results/src/main/java/com/android/developers/androidify/customize/watchface/WatchFaceModalSheet.kt
@@ -226,9 +226,8 @@ private fun WatchFaceModalSheetPreview() {
previewPath = R.drawable.watch_face_preview,
)
val sheetState = SheetState(
+ enabledValues = setOf(SheetValue.Expanded),
initialValue = SheetValue.Expanded,
- skipHiddenState = true,
- skipPartiallyExpanded = true,
positionalThreshold = { 0f },
velocityThreshold = { 0f },
)
diff --git a/feature/results/src/main/java/com/android/developers/androidify/customize/xr/CustomizeExportScreenSpatial.kt b/feature/results/src/main/java/com/android/developers/androidify/customize/xr/CustomizeExportScreenSpatial.kt
index 338a2cf7..5dee31d7 100644
--- a/feature/results/src/main/java/com/android/developers/androidify/customize/xr/CustomizeExportScreenSpatial.kt
+++ b/feature/results/src/main/java/com/android/developers/androidify/customize/xr/CustomizeExportScreenSpatial.kt
@@ -30,9 +30,8 @@ import androidx.compose.ui.Modifier
import androidx.compose.ui.graphics.Color
import androidx.compose.ui.layout.LookaheadScope
import androidx.compose.ui.unit.dp
-import androidx.xr.compose.spatial.ContentEdge
import androidx.xr.compose.spatial.Orbiter
-import androidx.xr.compose.spatial.OrbiterOffsetType
+import androidx.xr.compose.spatial.OrbiterAnchorPoint
import androidx.xr.compose.subspace.SpatialBox
import androidx.xr.compose.subspace.SpatialColumn
import androidx.xr.compose.subspace.SpatialPanel
@@ -43,6 +42,7 @@ import androidx.xr.compose.subspace.layout.fillMaxHeight
import androidx.xr.compose.subspace.layout.fillMaxWidth
import androidx.xr.compose.subspace.layout.offset
import androidx.xr.compose.subspace.layout.width
+import androidx.xr.compose.unit.DpVolumeOffset
import com.android.developers.androidify.customize.CustomizeExportScreenScaffold
import com.android.developers.androidify.customize.CustomizeExportState
import com.android.developers.androidify.customize.ExportImageCanvas
@@ -67,7 +67,7 @@ fun CustomizeExportLayoutSpatial(
SquiggleBackgroundSubspace(minimumHeight = 600.dp) {
MainPanelWorkaround()
SpatialColumn(SubspaceModifier.fillMaxWidth()) {
- Orbiter(position = ContentEdge.Bottom, alignment = Alignment.End) {
+ Orbiter(anchorPoint = OrbiterAnchorPoint.BottomEnd) {
actionButtons(Modifier)
}
SpatialPanel(
@@ -116,8 +116,8 @@ fun CustomizeExportLayoutSpatial(
) {
toolDetail(Modifier, false)
Orbiter(
- position = ContentEdge.End,
- offsetType = OrbiterOffsetType.InnerEdge,
+ anchorPoint = OrbiterAnchorPoint.End,
+ offset = DpVolumeOffset(x = (-16).dp),
) {
toolSelector(Modifier, false)
}
diff --git a/feature/results/src/main/java/com/android/developers/androidify/results/xr/ResultsScreenSpatial.kt b/feature/results/src/main/java/com/android/developers/androidify/results/xr/ResultsScreenSpatial.kt
index d5ffccd5..e278f3b7 100644
--- a/feature/results/src/main/java/com/android/developers/androidify/results/xr/ResultsScreenSpatial.kt
+++ b/feature/results/src/main/java/com/android/developers/androidify/results/xr/ResultsScreenSpatial.kt
@@ -25,15 +25,13 @@ import androidx.compose.runtime.getValue
import androidx.compose.runtime.mutableStateOf
import androidx.compose.runtime.remember
import androidx.compose.runtime.setValue
-import androidx.compose.ui.Alignment
import androidx.compose.ui.Modifier
import androidx.compose.ui.geometry.Size
import androidx.compose.ui.graphics.Color
import androidx.compose.ui.platform.LocalDensity
import androidx.compose.ui.unit.dp
-import androidx.xr.compose.spatial.ContentEdge
import androidx.xr.compose.spatial.Orbiter
-import androidx.xr.compose.spatial.OrbiterOffsetType
+import androidx.xr.compose.spatial.OrbiterAnchorPoint
import androidx.xr.compose.spatial.Subspace
import androidx.xr.compose.subspace.SpatialBox
import androidx.xr.compose.subspace.SpatialPanel
@@ -42,6 +40,7 @@ import androidx.xr.compose.subspace.layout.fillMaxHeight
import androidx.xr.compose.subspace.layout.fillMaxWidth
import androidx.xr.compose.subspace.layout.offset
import androidx.xr.compose.subspace.layout.rotate
+import androidx.xr.compose.unit.DpVolumeOffset
import androidx.xr.runtime.math.Pose
import androidx.xr.runtime.math.Vector3
import com.android.developers.androidify.results.ResultsScreenScaffold
@@ -77,10 +76,12 @@ fun ResultsScreenSpatial(
minimumHeight = 500.dp,
onMove = { moveEvent ->
offsetPose = moveEvent.pose
- false
},
) {
- Orbiter(ContentEdge.Top, offsetType = OrbiterOffsetType.InnerEdge) {
+ Orbiter(
+ anchorPoint = OrbiterAnchorPoint.Top,
+ offset = DpVolumeOffset(y = (-16).dp),
+ ) {
Box(
Modifier
.background(
@@ -106,9 +107,8 @@ fun ResultsScreenSpatial(
}
Orbiter(
- position = ContentEdge.Bottom,
- offsetType = OrbiterOffsetType.InnerEdge,
- alignment = Alignment.End,
+ anchorPoint = OrbiterAnchorPoint.BottomEnd,
+ offset = DpVolumeOffset(y = 16.dp),
) {
buttonRow(Modifier)
}
diff --git a/gradle/libs.versions.toml b/gradle/libs.versions.toml
index c8d81e48..1d7da77e 100644
--- a/gradle/libs.versions.toml
+++ b/gradle/libs.versions.toml
@@ -1,7 +1,7 @@
[versions]
# build
-appVersionCode = "10"
-appVersionName = "1.3.0"
+appVersionCode = "11"
+appVersionName = "1.4.0"
appVersionWearOffset = "60000000"
agp = "9.2.1"
bcpkixJdk18on = "1.84"
@@ -23,13 +23,13 @@ coilCompose = "3.4.0"
coilGif = "3.4.0"
composeBom = "2026.05.01"
concurrent = "1.3.0"
-converterGson = "2.11.0"
+converterGson = "3.0.0"
coreKtx = "1.18.0"
coreSplashscreen = "1.2.0"
crashlytics = "3.0.7"
datastore = "1.2.1"
espressoCore = "3.7.0"
-firebaseBom = "34.13.0"
+firebaseBom = "34.14.0"
genaiPrompt = "1.0.0-beta2"
googleServices = "4.4.4"
googleOss = "17.5.1"
@@ -58,7 +58,7 @@ playServicesWearable = "20.0.1"
playServicesBaseTesting = "16.2.0"
poseDetection = "18.0.0-beta5"
profileinstaller = "1.4.1"
-retrofit = "2.11.0"
+retrofit = "3.0.0"
robolectric = "4.16.1"
spotless = "8.6.0"
startup = "1.2.0"
diff --git a/wear/src/main/java/com/android/developers/androidify/ui/CallToActionScreen.kt b/wear/src/main/java/com/android/developers/androidify/ui/CallToActionScreen.kt
index 5ecfc22b..a63c3c50 100644
--- a/wear/src/main/java/com/android/developers/androidify/ui/CallToActionScreen.kt
+++ b/wear/src/main/java/com/android/developers/androidify/ui/CallToActionScreen.kt
@@ -30,7 +30,6 @@ import androidx.wear.compose.material3.IconButtonDefaults
import androidx.wear.compose.material3.MaterialTheme
import androidx.wear.compose.material3.ScreenScaffold
import androidx.wear.compose.material3.Text
-import androidx.wear.compose.material3.lazy.rememberTransformationSpec
import androidx.wear.compose.ui.tooling.preview.WearPreviewDevices
import com.android.developers.androidify.R
import com.android.developers.androidify.ui.theme.AndroidifyWearTheme