diff --git a/app/src/main/java/org/oxycblt/auxio/MainFragment.kt b/app/src/main/java/org/oxycblt/auxio/MainFragment.kt
index 788a1fc94..40c79f711 100644
--- a/app/src/main/java/org/oxycblt/auxio/MainFragment.kt
+++ b/app/src/main/java/org/oxycblt/auxio/MainFragment.kt
@@ -13,6 +13,7 @@ import androidx.navigation.NavController
import androidx.navigation.NavOptions
import androidx.navigation.fragment.NavHostFragment
import androidx.navigation.fragment.findNavController
+import com.google.android.material.bottomnavigation.LabelVisibilityMode
import org.oxycblt.auxio.databinding.FragmentMainBinding
import org.oxycblt.auxio.detail.DetailViewModel
import org.oxycblt.auxio.music.MusicStore
@@ -20,6 +21,7 @@ import org.oxycblt.auxio.music.Song
import org.oxycblt.auxio.playback.PlaybackViewModel
import org.oxycblt.auxio.ui.Accent
import org.oxycblt.auxio.ui.isLandscape
+import org.oxycblt.auxio.ui.isTablet
import org.oxycblt.auxio.ui.toColor
/**
@@ -66,6 +68,15 @@ class MainFragment : Fragment() {
binding.lifecycleOwner = this
+ binding.navBar.apply {
+ itemIconTintList = navTints
+ itemTextColor = navTints
+
+ if (isTablet(resources)) {
+ labelVisibilityMode = LabelVisibilityMode.LABEL_VISIBILITY_LABELED
+ }
+ }
+
binding.navBar.itemIconTintList = navTints
binding.navBar.itemTextColor = navTints
diff --git a/app/src/main/java/org/oxycblt/auxio/library/LibraryFragment.kt b/app/src/main/java/org/oxycblt/auxio/library/LibraryFragment.kt
index c88e8c69e..05d4d01e8 100644
--- a/app/src/main/java/org/oxycblt/auxio/library/LibraryFragment.kt
+++ b/app/src/main/java/org/oxycblt/auxio/library/LibraryFragment.kt
@@ -19,8 +19,7 @@ import org.oxycblt.auxio.music.BaseModel
import org.oxycblt.auxio.music.Genre
import org.oxycblt.auxio.music.Song
import org.oxycblt.auxio.ui.ActionMenu
-import org.oxycblt.auxio.ui.getLandscapeSpans
-import org.oxycblt.auxio.ui.isLandscape
+import org.oxycblt.auxio.ui.getSpans
import org.oxycblt.auxio.ui.requireCompatActivity
/**
@@ -64,9 +63,10 @@ class LibraryFragment : Fragment() {
binding.libraryRecycler.apply {
adapter = libraryAdapter
setHasFixedSize(true)
+ val spans = context.getSpans()
- if (isLandscape(resources)) {
- layoutManager = GridLayoutManager(requireContext(), getLandscapeSpans(resources))
+ if (spans != 1) {
+ layoutManager = GridLayoutManager(requireContext(), spans)
}
}
diff --git a/app/src/main/java/org/oxycblt/auxio/loading/LoadingFragment.kt b/app/src/main/java/org/oxycblt/auxio/loading/LoadingFragment.kt
index 1e4e2465f..916d0b6d7 100644
--- a/app/src/main/java/org/oxycblt/auxio/loading/LoadingFragment.kt
+++ b/app/src/main/java/org/oxycblt/auxio/loading/LoadingFragment.kt
@@ -110,8 +110,8 @@ class LoadingFragment : Fragment(R.layout.fragment_loading) {
return binding.root
}
- override fun onStart() {
- super.onStart()
+ override fun onResume() {
+ super.onResume()
// If the music was already loaded, then don't do it again.
if (MusicStore.getInstance().loaded) {
diff --git a/app/src/main/java/org/oxycblt/auxio/search/SearchFragment.kt b/app/src/main/java/org/oxycblt/auxio/search/SearchFragment.kt
index 77ad6fbbe..5c090dda5 100644
--- a/app/src/main/java/org/oxycblt/auxio/search/SearchFragment.kt
+++ b/app/src/main/java/org/oxycblt/auxio/search/SearchFragment.kt
@@ -25,8 +25,7 @@ import org.oxycblt.auxio.playback.PlaybackViewModel
import org.oxycblt.auxio.ui.Accent
import org.oxycblt.auxio.ui.ActionMenu
import org.oxycblt.auxio.ui.fixAnimationInfoMemoryLeak
-import org.oxycblt.auxio.ui.getLandscapeSpans
-import org.oxycblt.auxio.ui.isLandscape
+import org.oxycblt.auxio.ui.getSpans
import org.oxycblt.auxio.ui.requireCompatActivity
import org.oxycblt.auxio.ui.toColor
@@ -85,10 +84,9 @@ class SearchFragment : Fragment() {
binding.searchRecycler.apply {
adapter = searchAdapter
+ val spans = context.getSpans()
- if (isLandscape(resources)) {
- val spans = getLandscapeSpans(resources)
-
+ if (spans != -1) {
layoutManager = GridLayoutManager(requireContext(), spans).apply {
spanSizeLookup = object : GridLayoutManager.SpanSizeLookup() {
override fun getSpanSize(position: Int): Int =
diff --git a/app/src/main/java/org/oxycblt/auxio/songs/SongsFragment.kt b/app/src/main/java/org/oxycblt/auxio/songs/SongsFragment.kt
index 525c84dad..93864817a 100644
--- a/app/src/main/java/org/oxycblt/auxio/songs/SongsFragment.kt
+++ b/app/src/main/java/org/oxycblt/auxio/songs/SongsFragment.kt
@@ -19,8 +19,7 @@ import org.oxycblt.auxio.music.MusicStore
import org.oxycblt.auxio.playback.PlaybackViewModel
import org.oxycblt.auxio.ui.Accent
import org.oxycblt.auxio.ui.ActionMenu
-import org.oxycblt.auxio.ui.getLandscapeSpans
-import org.oxycblt.auxio.ui.isLandscape
+import org.oxycblt.auxio.ui.getSpans
import org.oxycblt.auxio.ui.requireCompatActivity
import kotlin.math.ceil
@@ -70,8 +69,10 @@ class SongsFragment : Fragment() {
adapter = songAdapter
setHasFixedSize(true)
- if (isLandscape(resources)) {
- layoutManager = GridLayoutManager(requireContext(), getLandscapeSpans(resources))
+ val spans = context.getSpans()
+
+ if (spans != 1) {
+ layoutManager = GridLayoutManager(requireContext(), spans)
}
post {
diff --git a/app/src/main/java/org/oxycblt/auxio/ui/InterfaceUtils.kt b/app/src/main/java/org/oxycblt/auxio/ui/InterfaceUtils.kt
index a324c2a56..d9461841b 100644
--- a/app/src/main/java/org/oxycblt/auxio/ui/InterfaceUtils.kt
+++ b/app/src/main/java/org/oxycblt/auxio/ui/InterfaceUtils.kt
@@ -139,11 +139,24 @@ fun isLandscape(resources: Resources): Boolean {
}
/**
- * Get the span count for most RecyclerViews when in landscape mode.
- * @return 3 if landscape mode is tablet, 2 if landscape mode is phone
+ * Determine if we are in tablet mode or not
*/
-fun getLandscapeSpans(resources: Resources): Int {
- return if (resources.configuration.screenLayout == Configuration.SCREENLAYOUT_SIZE_LARGE) 3 else 2
+fun isTablet(resources: Resources): Boolean {
+ val layout = resources.configuration.screenLayout and Configuration.SCREENLAYOUT_SIZE_MASK
+
+ return layout == Configuration.SCREENLAYOUT_SIZE_XLARGE ||
+ layout == Configuration.SCREENLAYOUT_SIZE_LARGE
+}
+
+/**
+ * Get the span count for most RecyclerViews
+ */
+fun Context.getSpans(): Int {
+ return if (isLandscape(resources)) {
+ if (isTablet(resources)) 3 else 2
+ } else {
+ if (isTablet(resources)) 2 else 1
+ }
}
/**
diff --git a/app/src/main/res/layout-large-port/item_album_header.xml b/app/src/main/res/layout-large-port/item_album_header.xml
new file mode 100644
index 000000000..75683f3c5
--- /dev/null
+++ b/app/src/main/res/layout-large-port/item_album_header.xml
@@ -0,0 +1,127 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/res/layout-large-port/item_artist_header.xml b/app/src/main/res/layout-large-port/item_artist_header.xml
new file mode 100644
index 000000000..ab010efdd
--- /dev/null
+++ b/app/src/main/res/layout-large-port/item_artist_header.xml
@@ -0,0 +1,124 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/res/layout-large-port/item_genre_header.xml b/app/src/main/res/layout-large-port/item_genre_header.xml
new file mode 100644
index 000000000..239dd60e3
--- /dev/null
+++ b/app/src/main/res/layout-large-port/item_genre_header.xml
@@ -0,0 +1,123 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/app/src/main/res/values-large/dimens.xml b/app/src/main/res/values-large/dimens.xml
new file mode 100644
index 000000000..3a81d6841
--- /dev/null
+++ b/app/src/main/res/values-large/dimens.xml
@@ -0,0 +1,5 @@
+
+
+ 200dp
+ 200dp
+
\ No newline at end of file
diff --git a/app/src/main/res/values-large/styles.xml b/app/src/main/res/values-large/styles.xml
new file mode 100644
index 000000000..541ce895c
--- /dev/null
+++ b/app/src/main/res/values-large/styles.xml
@@ -0,0 +1,40 @@
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/res/values/dimens.xml b/app/src/main/res/values/dimens.xml
index 928c7ceb4..9ae85cd1c 100644
--- a/app/src/main/res/values/dimens.xml
+++ b/app/src/main/res/values/dimens.xml
@@ -44,6 +44,7 @@
26sp
18sp
19sp
+ 16sp
4dp