diff --git a/app/src/main/java/org/oxycblt/auxio/MainActivity.kt b/app/src/main/java/org/oxycblt/auxio/MainActivity.kt
index d0011a85a..9b55e1825 100644
--- a/app/src/main/java/org/oxycblt/auxio/MainActivity.kt
+++ b/app/src/main/java/org/oxycblt/auxio/MainActivity.kt
@@ -28,6 +28,7 @@ import androidx.appcompat.app.AppCompatActivity
import androidx.appcompat.app.AppCompatDelegate
import androidx.core.view.updatePadding
import androidx.databinding.DataBindingUtil
+import androidx.viewbinding.ViewBinding
import org.oxycblt.auxio.accent.Accent
import org.oxycblt.auxio.databinding.ActivityMainBinding
import org.oxycblt.auxio.playback.PlaybackViewModel
@@ -114,7 +115,7 @@ class MainActivity : AppCompatActivity() {
}
}
- private fun applyEdgeToEdgeWindow(binding: ActivityMainBinding) {
+ private fun applyEdgeToEdgeWindow(binding: ViewBinding) {
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.R) {
// Do modern edge to edge, which happens to be around twice the size of the
// old way of doing things. Thanks android, very cool!
@@ -147,7 +148,7 @@ class MainActivity : AppCompatActivity() {
}
}
- private fun WindowInsets.applyLeftRightInsets(binding: ActivityMainBinding): WindowInsets {
+ private fun WindowInsets.applyLeftRightInsets(binding: ViewBinding): WindowInsets {
val bars = systemBarsCompat
binding.root.updatePadding(
diff --git a/app/src/main/java/org/oxycblt/auxio/MainFragment.kt b/app/src/main/java/org/oxycblt/auxio/MainFragment.kt
index 23f5d46c9..a95b83fc7 100644
--- a/app/src/main/java/org/oxycblt/auxio/MainFragment.kt
+++ b/app/src/main/java/org/oxycblt/auxio/MainFragment.kt
@@ -19,6 +19,7 @@
package org.oxycblt.auxio
import android.Manifest
+import android.os.Build
import android.os.Bundle
import android.view.LayoutInflater
import android.view.View
@@ -73,6 +74,22 @@ class MainFragment : Fragment() {
}
)
+ if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.N) {
+ // Auxio's layout completely breaks down when it's window is resized too small,
+ // but for some insane reason google decided to cripple the window APIs one could use
+ // to limit it's size. So, we just have our own special layout that is shown whenever
+ // the screen is too small because nothing works the way it should and everything
+ // is broken.
+
+ if (requireActivity().isInMultiWindowMode) {
+ val config = resources.configuration
+
+ if (config.screenHeightDp < 250 || config.screenWidthDp < 250) {
+ binding.layoutTooSmall.visibility = View.VISIBLE
+ }
+ }
+ }
+
// --- VIEWMODEL SETUP ---
// We have to control the bar view from here since using a Fragment in PlaybackLayout
diff --git a/app/src/main/java/org/oxycblt/auxio/playback/PlaybackLayout.kt b/app/src/main/java/org/oxycblt/auxio/playback/PlaybackLayout.kt
index fa53f73c2..7c45d96ce 100644
--- a/app/src/main/java/org/oxycblt/auxio/playback/PlaybackLayout.kt
+++ b/app/src/main/java/org/oxycblt/auxio/playback/PlaybackLayout.kt
@@ -164,9 +164,15 @@ class PlaybackLayout @JvmOverloads constructor(
// Make sure we add our fragment to this view. This is actually a replace operation
// since we don't want to stack fragments but we can't ensure that this view doesn't
// already have a fragment attached.
- (context as AppCompatActivity).supportFragmentManager.beginTransaction()
- .replace(R.id.playback_panel, playbackFragment)
- .commit()
+ try {
+ (context as AppCompatActivity).supportFragmentManager.beginTransaction()
+ .replace(R.id.playback_panel, playbackFragment)
+ .commit()
+ } catch (e: Exception) {
+ // Band-aid to stop the app crashing if we have to swap out the content view
+ // without warning (which we have to do sometimes because android is the worst
+ // thing ever
+ }
}
}
diff --git a/app/src/main/res/layout-land/fragment_playback.xml b/app/src/main/res/layout-land/fragment_playback.xml
index 726ecc03f..687c4334a 100644
--- a/app/src/main/res/layout-land/fragment_playback.xml
+++ b/app/src/main/res/layout-land/fragment_playback.xml
@@ -36,8 +36,9 @@
-
-
+
+
+
+
+
+
+ android:background="?attr/colorSurface"
+ android:visibility="gone">
+
+
+
+
+
+
+
-
diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml
index 69f56711c..2769dc4f3 100644
--- a/app/src/main/res/values/strings.xml
+++ b/app/src/main/res/values/strings.xml
@@ -107,6 +107,7 @@
Auxio needs permission to read your music library
No app can open this link
This directory is not supported
+ Auxio does not support this screen size
Search your library…