[Android] Fix grid item size calculation
Nicolas Pomepuy
git at videolan.org
Tue Jul 2 12:59:06 CEST 2019
vlc-android | branch: fix_tv | Nicolas Pomepuy <nicolas.pomepuy at gmail.com> | Tue Jul 2 12:59:02 2019 +0200| [436dce3ecfd3847aae7552700451c39a12618628] | committer: Nicolas Pomepuy
Fix grid item size calculation
> https://code.videolan.org/videolan/vlc-android/commit/436dce3ecfd3847aae7552700451c39a12618628
---
vlc-android/src/org/videolan/vlc/gui/PlaylistFragment.kt | 2 +-
.../org/videolan/vlc/gui/tv/browser/BaseBrowserTvFragment.kt | 6 +-----
.../vlc/gui/view/RecyclerSectionItemGridDecoration.kt | 11 ++++-------
3 files changed, 6 insertions(+), 13 deletions(-)
diff --git a/vlc-android/src/org/videolan/vlc/gui/PlaylistFragment.kt b/vlc-android/src/org/videolan/vlc/gui/PlaylistFragment.kt
index 566deaea5..3b7d1ff03 100644
--- a/vlc-android/src/org/videolan/vlc/gui/PlaylistFragment.kt
+++ b/vlc-android/src/org/videolan/vlc/gui/PlaylistFragment.kt
@@ -106,7 +106,7 @@ class PlaylistFragment : BaseAudioBrowser<PlaylistsViewModel>(), SwipeRefreshLay
//size of an item
val spacing = resources.getDimension(R.dimen.kl_half).toInt()
- val itemSize = RecyclerSectionItemGridDecoration.getItemSize(requireActivity().getScreenWidth(), nbColumns, spacing)
+ val itemSize = RecyclerSectionItemGridDecoration.getItemSize(requireActivity().getScreenWidth() - spacing * 2, nbColumns, spacing)
playlistAdapter = AudioBrowserAdapter(MediaLibraryItem.TYPE_PLAYLIST, this, itemSize)
adapter = playlistAdapter
diff --git a/vlc-android/src/org/videolan/vlc/gui/tv/browser/BaseBrowserTvFragment.kt b/vlc-android/src/org/videolan/vlc/gui/tv/browser/BaseBrowserTvFragment.kt
index d2dcbce0f..7cbec95d8 100644
--- a/vlc-android/src/org/videolan/vlc/gui/tv/browser/BaseBrowserTvFragment.kt
+++ b/vlc-android/src/org/videolan/vlc/gui/tv/browser/BaseBrowserTvFragment.kt
@@ -138,7 +138,7 @@ abstract class BaseBrowserTvFragment : Fragment(), BrowserFragmentInterface, IEv
spacing = resources.getDimensionPixelSize(R.dimen.kl_half)
//size of an item
- val itemSize = RecyclerSectionItemGridDecoration.getItemSize(requireActivity().getScreenWidth(), viewModel.nbColumns, spacing)
+ val itemSize = RecyclerSectionItemGridDecoration.getItemSize(requireActivity().getScreenWidth() - list.paddingLeft - list.paddingRight, viewModel.nbColumns, spacing)
gridLayoutManager.spanSizeLookup = object : GridLayoutManager.SpanSizeLookup() {
override fun getSpanSize(position: Int): Int {
@@ -192,7 +192,6 @@ abstract class BaseBrowserTvFragment : Fragment(), BrowserFragmentInterface, IEv
viewModel.nbColumns = getColumnNumber()
}
-
override fun onConfigurationChanged(newConfig: Configuration) {
super.onConfigurationChanged(newConfig)
@@ -219,14 +218,12 @@ abstract class BaseBrowserTvFragment : Fragment(), BrowserFragmentInterface, IEv
return true
}
-
override fun onCtxClick(v: View, position: Int, item: MediaLibraryItem) {}
override fun onUpdateFinished(adapter: RecyclerView.Adapter<*>) {}
override fun onImageClick(v: View, position: Int, item: MediaLibraryItem) {}
-
override fun onItemFocused(v: View, item: MediaLibraryItem) {
(item as? MediaLibraryItem)?.run {
if (currentArt == artworkMrl) return at run
@@ -350,7 +347,6 @@ abstract class BaseBrowserTvFragment : Fragment(), BrowserFragmentInterface, IEv
animationDelegate.setVisibility(imageButtonHeader, if (viewModel.provider.headers.isEmpty) View.GONE else View.VISIBLE)
animationDelegate.setVisibility(headerButton, if (viewModel.provider.headers.isEmpty) View.GONE else View.VISIBLE)
animationDelegate.setVisibility(headerDescription, if (viewModel.provider.headers.isEmpty) View.GONE else View.VISIBLE)
-
}
}
diff --git a/vlc-android/src/org/videolan/vlc/gui/view/RecyclerSectionItemGridDecoration.kt b/vlc-android/src/org/videolan/vlc/gui/view/RecyclerSectionItemGridDecoration.kt
index e833d841c..13b769cb4 100644
--- a/vlc-android/src/org/videolan/vlc/gui/view/RecyclerSectionItemGridDecoration.kt
+++ b/vlc-android/src/org/videolan/vlc/gui/view/RecyclerSectionItemGridDecoration.kt
@@ -26,18 +26,15 @@ class RecyclerSectionItemGridDecoration(private val headerOffset: Int, private v
val pos = parent.getChildAdapterPosition(view)
val positionForSection = provider.getPositionForSection(pos)
- val isFirstInLine = positionForSection == pos || (pos - positionForSection) % nbColumns == 0
- val isLastInLine = (pos - positionForSection) % nbColumns == nbColumns - 1
- if (BuildConfig.DEBUG) Log.d(TAG, "Item $pos first: $isFirstInLine last: $isLastInLine")
- outRect.left = if (isFirstInLine) space * 2 else space
- outRect.right = if (isLastInLine) space * 2 else space
+ outRect.left = space
+ outRect.right = space
outRect.top = space
outRect.bottom = space
for (i in 0 until nbColumns) {
if ((pos - i) >= 0 && provider.isFirstInSection(pos - i)) {
- if (BuildConfig.DEBUG) Log.d(TAG, "Adding offset for $pos");
+ if (BuildConfig.DEBUG) Log.d(TAG, "Adding offset for $pos")
outRect.top = headerOffset + space
}
}
@@ -128,6 +125,6 @@ class RecyclerSectionItemGridDecoration(private val headerOffset: Int, private v
}
companion object {
- fun getItemSize(screenWidth: Int, nbColumns: Int, spacing: Int) = ((screenWidth - spacing * 2) / nbColumns) - (spacing * nbColumns)
+ fun getItemSize(screenWidth: Int, nbColumns: Int, spacing: Int) = (screenWidth - (spacing * nbColumns)) / nbColumns
}
}
More information about the Android
mailing list