From 240f2a45732c8735234b541461242f572078514e Mon Sep 17 00:00:00 2001 From: Javernaut Date: Mon, 20 Nov 2023 16:16:33 +0100 Subject: [PATCH] Using androidx.window for getting screen size --- app/build.gradle | 1 + .../whatthecodec/presentation/video/FramesHeader.kt | 12 +++++++----- gradle/libs.versions.toml | 3 +++ 3 files changed, 11 insertions(+), 5 deletions(-) diff --git a/app/build.gradle b/app/build.gradle index e1ebc274..df5978a2 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -133,6 +133,7 @@ dependencies { implementation libs.savedstate implementation libs.viewpager2 implementation libs.browser + implementation libs.window // TODO replace with own implementation implementation libs.liveevent diff --git a/app/src/main/java/com/javernaut/whatthecodec/presentation/video/FramesHeader.kt b/app/src/main/java/com/javernaut/whatthecodec/presentation/video/FramesHeader.kt index 4c197525..16925eb6 100644 --- a/app/src/main/java/com/javernaut/whatthecodec/presentation/video/FramesHeader.kt +++ b/app/src/main/java/com/javernaut/whatthecodec/presentation/video/FramesHeader.kt @@ -1,7 +1,6 @@ package com.javernaut.whatthecodec.presentation.video import android.app.Activity -import android.graphics.Point import androidx.compose.animation.animateColorAsState import androidx.compose.foundation.background import androidx.compose.foundation.layout.Box @@ -23,6 +22,7 @@ import androidx.compose.ui.platform.LocalDensity import androidx.compose.ui.res.stringResource import androidx.compose.ui.text.style.TextAlign import androidx.compose.ui.unit.dp +import androidx.window.layout.WindowMetricsCalculator import com.javernaut.whatthecodec.R import com.javernaut.whatthecodec.presentation.compose.common.GridLayout import com.javernaut.whatthecodec.presentation.root.viewmodel.model.ActualPreview @@ -44,15 +44,16 @@ fun getDesiredFrameWidth(activity: Activity): Int { } fun getPreviewViewWidth(activity: Activity): Int { - val point = Point() - activity.windowManager.defaultDisplay.getSize(point) - return min(point.x, point.y) + val metrics = WindowMetricsCalculator.getOrCreate().computeCurrentWindowMetrics(activity) + return with(metrics.bounds) { + min(width(), height()) + } } @Composable fun FramesHeader(preview: Preview, dstFrameWidth: Int) { when (preview) { - is NotYetEvaluated -> { } + is NotYetEvaluated -> {} is ActualPreview -> { val backgroundColor by animateColorAsState(Color(preview.backgroundColor)) Box( @@ -70,6 +71,7 @@ fun FramesHeader(preview: Preview, dstFrameWidth: Int) { ) } } + NoPreviewAvailable -> { CompositionLocalProvider(LocalContentAlpha provides ContentAlpha.medium) { Text( diff --git a/gradle/libs.versions.toml b/gradle/libs.versions.toml index 065aac14..68fa6a43 100644 --- a/gradle/libs.versions.toml +++ b/gradle/libs.versions.toml @@ -4,6 +4,7 @@ detektplugin = "1.23.3" kotlin = "1.9.20" coroutines = "1.7.3" lifecycle = "2.6.2" +window = "1.2.0" compose-animation = "1.5.4" compose-compiler = "1.5.4" compose-foundation = "1.5.4" @@ -23,6 +24,8 @@ lifecycle-viewmodel-ktx = { module = "androidx.lifecycle:lifecycle-viewmodel-ktx lifecycle-livedata-ktx = { module = "androidx.lifecycle:lifecycle-livedata-ktx", version.ref = "lifecycle" } lifecycle-viewmodel-savedstate = { module = "androidx.lifecycle:lifecycle-viewmodel-savedstate", version.ref = "lifecycle" } +window = { module = "androidx.window:window", version.ref = "window" } + liveevent = "com.github.hadilq.liveevent:liveevent:1.2.0" palette = "androidx.palette:palette-ktx:1.0.0" savedstate = "androidx.savedstate:savedstate:1.2.1"