Skip to content

Commit bc3b51a

Browse files
RebecaTudorrtudor@mozilla.com
authored andcommitted
Bug 1984056 - Update onboarding redesign to match Figma landscape r=android-reviewers,anpopa,gmalekpour
For devices that are in landscape and don't have large screens, the page card should fill the screen. Differential Revision: https://phabricator.services.mozilla.com/D267746
1 parent 059eda0 commit bc3b51a

File tree

1 file changed

+26
-7
lines changed

1 file changed

+26
-7
lines changed

mobile/android/fenix/app/src/main/java/org/mozilla/fenix/onboarding/redesign/view/OnboardingScreenRedesign.kt

Lines changed: 26 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -275,10 +275,11 @@ private fun OnboardingContent(
275275
val isLargeScreen = LocalContext.current.isLargeScreenSize()
276276
val isLandscape = LocalConfiguration.current.orientation == Configuration.ORIENTATION_LANDSCAPE
277277

278-
val pagerWidth = pageContentWidth(boxWithConstraintsScope, isLargeScreen)
279-
val pagerHeight = pageContentHeight(boxWithConstraintsScope, isLargeScreen)
278+
val pagerWidth = pageContentWidth(boxWithConstraintsScope, isLargeScreen, isLandscape)
279+
val pagerHeight = pageContentHeight(boxWithConstraintsScope, isLargeScreen, isLandscape)
280280

281281
val pagePeekWidth = ((maxWidth - pagerWidth) / 2).coerceAtLeast(8.dp)
282+
val paddingValue = if (!isLargeScreen && isLandscape) 0.dp else pagePeekWidth
282283

283284
if (!isNonLargeScreenLandscape(isLargeScreen, isLandscape)) {
284285
Image(
@@ -297,7 +298,7 @@ private fun OnboardingContent(
297298
.fillMaxWidth()
298299
.height(pagerHeight)
299300
.nestedScroll(nestedScrollConnection),
300-
contentPadding = PaddingValues(horizontal = pagePeekWidth),
301+
contentPadding = PaddingValues(horizontal = paddingValue),
301302
pageSize = PageSize.Fill,
302303
beyondViewportPageCount = 2,
303304
pageSpacing = pageSpacing(isLargeScreen, pagePeekWidth),
@@ -416,22 +417,40 @@ private object PageContentLayout {
416417
const val WIDTH_RATIO = 0.85f
417418
const val TABLET_WIDTH_RATIO = 0.35f
418419
const val TABLET_HEIGHT_RATIO = 0.50f
420+
const val HEIGHT_RATIO_LANDSCAPE_NON_LARGE_SCREEN = 1f
421+
const val WIDTH_RATIO_LANDSCAPE_NON_LARGE_SCREEN = 1f
419422
}
420423

421-
private fun pageContentHeight(scope: BoxWithConstraintsScope, isLargeScreen: Boolean): Dp {
424+
private fun pageContentHeight(
425+
scope: BoxWithConstraintsScope,
426+
isLargeScreen: Boolean,
427+
isLandscape: Boolean,
428+
): Dp {
422429
val minHeight =
423430
if (isLargeScreen) PageContentLayout.MIN_HEIGHT_TABLET_DP else PageContentLayout.MIN_HEIGHT_DP
424431
val heightRatio =
425-
if (isLargeScreen) PageContentLayout.TABLET_HEIGHT_RATIO else PageContentLayout.HEIGHT_RATIO
432+
when {
433+
isLargeScreen -> PageContentLayout.TABLET_HEIGHT_RATIO
434+
!isLargeScreen && isLandscape -> PageContentLayout.HEIGHT_RATIO_LANDSCAPE_NON_LARGE_SCREEN
435+
else -> PageContentLayout.HEIGHT_RATIO
436+
}
426437

427438
return scope.maxHeight.times(heightRatio).coerceAtLeast(minHeight)
428439
}
429440

430-
private fun pageContentWidth(scope: BoxWithConstraintsScope, isLargeScreen: Boolean): Dp {
441+
private fun pageContentWidth(
442+
scope: BoxWithConstraintsScope,
443+
isLargeScreen: Boolean,
444+
isLandscape: Boolean,
445+
): Dp {
431446
val minWidth =
432447
if (isLargeScreen) PageContentLayout.MIN_WIDTH_TABLET_DP else PageContentLayout.MIN_WIDTH_DP
433448
val widthRatio =
434-
if (isLargeScreen) PageContentLayout.TABLET_WIDTH_RATIO else PageContentLayout.WIDTH_RATIO
449+
when {
450+
isLargeScreen -> PageContentLayout.TABLET_WIDTH_RATIO
451+
!isLargeScreen && isLandscape -> PageContentLayout.WIDTH_RATIO_LANDSCAPE_NON_LARGE_SCREEN
452+
else -> PageContentLayout.WIDTH_RATIO
453+
}
435454

436455
return scope.maxWidth.times(widthRatio).coerceAtLeast(minWidth)
437456
}

0 commit comments

Comments
 (0)