diff --git a/app/src/main/java/org/thoughtcrime/securesms/stories/viewer/StoryViewerActivity.kt b/app/src/main/java/org/thoughtcrime/securesms/stories/viewer/StoryViewerActivity.kt index 20b8b7647..7c647551c 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/stories/viewer/StoryViewerActivity.kt +++ b/app/src/main/java/org/thoughtcrime/securesms/stories/viewer/StoryViewerActivity.kt @@ -10,8 +10,11 @@ import android.view.View import androidx.activity.viewModels import androidx.appcompat.app.AppCompatDelegate import androidx.media.AudioManagerCompat +import androidx.window.layout.WindowMetricsCalculator import com.bumptech.glide.Glide import com.bumptech.glide.MemoryCategory +import org.signal.core.util.dp +import org.signal.core.util.sp import org.thoughtcrime.securesms.PassphraseRequiredActivity import org.thoughtcrime.securesms.R import org.thoughtcrime.securesms.components.voice.VoiceNoteMediaController @@ -52,11 +55,22 @@ class StoryViewerActivity : PassphraseRequiredActivity(), VoiceNoteMediaControll supportPostponeEnterTransition() val root = findViewById(android.R.id.content) + val metrics = WindowMetricsCalculator.getOrCreate().computeCurrentWindowMetrics(this) + val statusBarHeight = ViewUtil.getStatusBarHeight(root) + val contentHeight = metrics.bounds.width() * (16 / 9f) + 48.sp + val spaceAndNavbar = metrics.bounds.height() - statusBarHeight - contentHeight + val (padTop, padBottom) = if (spaceAndNavbar > 72.dp) { + val pad = (metrics.bounds.height() - contentHeight) / 2f + pad to pad + } else { + statusBarHeight to ViewUtil.getNavigationBarHeight(root) + } + root.setPadding( 0, - ViewUtil.getStatusBarHeight(root), + padTop.toInt(), 0, - ViewUtil.getNavigationBarHeight(root) + padBottom.toInt() ) super.onCreate(savedInstanceState, ready) diff --git a/core-util/src/main/java/org/signal/core/util/DimensionUnitExtensions.kt b/core-util/src/main/java/org/signal/core/util/DimensionUnitExtensions.kt index b403bcb25..71828ad6d 100644 --- a/core-util/src/main/java/org/signal/core/util/DimensionUnitExtensions.kt +++ b/core-util/src/main/java/org/signal/core/util/DimensionUnitExtensions.kt @@ -12,4 +12,16 @@ val Float.dp: Float get() = DimensionUnit.DP.toPixels(this) * Converts the given Int DP value into Pixels */ @get:Px -val Int.dp: Int get() = this.toFloat().dp.toInt() \ No newline at end of file +val Int.dp: Int get() = this.toFloat().dp.toInt() + +/** + * Converts the given Float SP value into Pixels. + */ +@get:Px +val Float.sp: Float get() = DimensionUnit.SP.toPixels(this) + +/** + * Converts the given Int SP value into Pixels + */ +@get:Px +val Int.sp: Int get() = this.toFloat().sp.toInt() \ No newline at end of file