mirror of
https://github.com/cmclark00/mintris.git
synced 2025-05-18 17:35:21 +01:00
Fix: Adjust layout padding to respect display cutouts
This commit is contained in:
parent
501e5b37fc
commit
6044b0d93b
8 changed files with 176 additions and 84 deletions
|
@ -11,6 +11,11 @@ import android.graphics.Color
|
|||
import android.util.Log
|
||||
import android.view.KeyEvent
|
||||
import android.view.InputDevice
|
||||
import android.graphics.Rect
|
||||
import android.view.View
|
||||
import androidx.core.view.ViewCompat
|
||||
import androidx.core.view.WindowInsetsCompat
|
||||
import androidx.core.view.updatePadding
|
||||
|
||||
class HighScoresActivity : AppCompatActivity() {
|
||||
private lateinit var binding: HighScoresBinding
|
||||
|
@ -26,6 +31,20 @@ class HighScoresActivity : AppCompatActivity() {
|
|||
binding = HighScoresBinding.inflate(layoutInflater)
|
||||
setContentView(binding.root)
|
||||
|
||||
// Apply insets to the root view
|
||||
val initialPadding = Rect(binding.root.paddingLeft, binding.root.paddingTop,
|
||||
binding.root.paddingRight, binding.root.paddingBottom)
|
||||
ViewCompat.setOnApplyWindowInsetsListener(binding.root) { view, windowInsets ->
|
||||
val insets = windowInsets.getInsets(WindowInsetsCompat.Type.systemBars())
|
||||
view.updatePadding(
|
||||
left = initialPadding.left + insets.left,
|
||||
top = initialPadding.top + insets.top,
|
||||
right = initialPadding.right + insets.right,
|
||||
bottom = initialPadding.bottom + insets.bottom
|
||||
)
|
||||
WindowInsetsCompat.CONSUMED
|
||||
}
|
||||
|
||||
highScoreManager = HighScoreManager(this)
|
||||
progressionManager = PlayerProgressionManager(this)
|
||||
|
||||
|
|
|
@ -45,6 +45,10 @@ import android.widget.ImageButton
|
|||
import android.graphics.drawable.GradientDrawable
|
||||
import android.widget.TextView
|
||||
import android.widget.Switch
|
||||
import androidx.core.view.ViewCompat
|
||||
import androidx.core.view.WindowInsetsCompat
|
||||
import android.view.ViewGroup
|
||||
import androidx.core.view.updatePadding
|
||||
|
||||
class MainActivity : AppCompatActivity(),
|
||||
GamepadController.GamepadConnectionListener,
|
||||
|
@ -135,6 +139,65 @@ class MainActivity : AppCompatActivity(),
|
|||
binding = ActivityMainBinding.inflate(layoutInflater)
|
||||
setContentView(binding.root)
|
||||
|
||||
// Store initial padding values before applying insets
|
||||
val initialPausePadding = Rect(binding.pauseContainer.paddingLeft, binding.pauseContainer.paddingTop,
|
||||
binding.pauseContainer.paddingRight, binding.pauseContainer.paddingBottom)
|
||||
val initialGameOverPadding = Rect(binding.gameOverContainer.paddingLeft, binding.gameOverContainer.paddingTop,
|
||||
binding.gameOverContainer.paddingRight, binding.gameOverContainer.paddingBottom)
|
||||
val initialCustomizationPadding = Rect(binding.customizationContainer.paddingLeft, binding.customizationContainer.paddingTop,
|
||||
binding.customizationContainer.paddingRight, binding.customizationContainer.paddingBottom)
|
||||
val initialProgressionPadding = Rect(binding.progressionScreen.paddingLeft, binding.progressionScreen.paddingTop,
|
||||
binding.progressionScreen.paddingRight, binding.progressionScreen.paddingBottom)
|
||||
|
||||
// Apply insets to the pause container
|
||||
ViewCompat.setOnApplyWindowInsetsListener(binding.pauseContainer) { view, windowInsets ->
|
||||
val insets = windowInsets.getInsets(WindowInsetsCompat.Type.systemBars())
|
||||
// Apply insets by adding to initial padding
|
||||
view.updatePadding(
|
||||
left = initialPausePadding.left + insets.left,
|
||||
top = initialPausePadding.top + insets.top,
|
||||
right = initialPausePadding.right + insets.right,
|
||||
bottom = initialPausePadding.bottom + insets.bottom
|
||||
)
|
||||
WindowInsetsCompat.CONSUMED
|
||||
}
|
||||
|
||||
// Apply insets to the game over container
|
||||
ViewCompat.setOnApplyWindowInsetsListener(binding.gameOverContainer) { view, windowInsets ->
|
||||
val insets = windowInsets.getInsets(WindowInsetsCompat.Type.systemBars())
|
||||
view.updatePadding(
|
||||
left = initialGameOverPadding.left + insets.left,
|
||||
top = initialGameOverPadding.top + insets.top,
|
||||
right = initialGameOverPadding.right + insets.right,
|
||||
bottom = initialGameOverPadding.bottom + insets.bottom
|
||||
)
|
||||
WindowInsetsCompat.CONSUMED
|
||||
}
|
||||
|
||||
// Apply insets to the customization container
|
||||
ViewCompat.setOnApplyWindowInsetsListener(binding.customizationContainer) { view, windowInsets ->
|
||||
val insets = windowInsets.getInsets(WindowInsetsCompat.Type.systemBars())
|
||||
view.updatePadding(
|
||||
left = initialCustomizationPadding.left + insets.left,
|
||||
top = initialCustomizationPadding.top + insets.top,
|
||||
right = initialCustomizationPadding.right + insets.right,
|
||||
bottom = initialCustomizationPadding.bottom + insets.bottom
|
||||
)
|
||||
WindowInsetsCompat.CONSUMED
|
||||
}
|
||||
|
||||
// Apply insets to the progression screen
|
||||
ViewCompat.setOnApplyWindowInsetsListener(binding.progressionScreen) { view, windowInsets ->
|
||||
val insets = windowInsets.getInsets(WindowInsetsCompat.Type.systemBars())
|
||||
view.updatePadding(
|
||||
left = initialProgressionPadding.left + insets.left,
|
||||
top = initialProgressionPadding.top + insets.top,
|
||||
right = initialProgressionPadding.right + insets.right,
|
||||
bottom = initialProgressionPadding.bottom + insets.bottom
|
||||
)
|
||||
WindowInsetsCompat.CONSUMED
|
||||
}
|
||||
|
||||
// Disable Android back gesture to prevent accidental app exits
|
||||
disableAndroidBackGesture()
|
||||
|
||||
|
|
|
@ -1,12 +1,17 @@
|
|||
package com.pixelmintdrop
|
||||
|
||||
import android.graphics.Color
|
||||
import android.graphics.Rect
|
||||
import android.os.Bundle
|
||||
import android.view.View
|
||||
import androidx.appcompat.app.AlertDialog
|
||||
import androidx.appcompat.app.AppCompatActivity
|
||||
import androidx.core.view.ViewCompat
|
||||
import androidx.core.view.WindowInsetsCompat
|
||||
import androidx.core.view.updatePadding
|
||||
import com.pixelmintdrop.databinding.ActivityStatsBinding
|
||||
import com.pixelmintdrop.model.StatsManager
|
||||
import com.pixelmintdrop.model.PlayerProgressionManager
|
||||
import android.graphics.Color
|
||||
import java.text.SimpleDateFormat
|
||||
import java.util.*
|
||||
|
||||
|
@ -21,6 +26,20 @@ class StatsActivity : AppCompatActivity() {
|
|||
binding = ActivityStatsBinding.inflate(layoutInflater)
|
||||
setContentView(binding.root)
|
||||
|
||||
// Apply insets to the root view
|
||||
val initialPadding = Rect(binding.root.paddingLeft, binding.root.paddingTop,
|
||||
binding.root.paddingRight, binding.root.paddingBottom)
|
||||
ViewCompat.setOnApplyWindowInsetsListener(binding.root) { view, windowInsets ->
|
||||
val insets = windowInsets.getInsets(WindowInsetsCompat.Type.systemBars())
|
||||
view.updatePadding(
|
||||
left = initialPadding.left + insets.left,
|
||||
top = initialPadding.top + insets.top,
|
||||
right = initialPadding.right + insets.right,
|
||||
bottom = initialPadding.bottom + insets.bottom
|
||||
)
|
||||
WindowInsetsCompat.CONSUMED
|
||||
}
|
||||
|
||||
statsManager = StatsManager(this)
|
||||
progressionManager = PlayerProgressionManager(this)
|
||||
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue