fix shimmer items having the wrong size, update MediaFragmentSimilar to not depend on a specific view model
This commit is contained in:
parent
e113a9c795
commit
e0f05169f5
|
@ -42,9 +42,12 @@ import kotlinx.coroutines.launch
|
|||
import org.mosad.teapod.R
|
||||
import org.mosad.teapod.databinding.FragmentHomeBinding
|
||||
import org.mosad.teapod.ui.activity.main.viewmodel.HomeViewModel
|
||||
import org.mosad.teapod.util.*
|
||||
import org.mosad.teapod.util.adapter.MediaEpisodeListAdapter
|
||||
import org.mosad.teapod.util.adapter.MediaItemListAdapter
|
||||
import org.mosad.teapod.util.playerIntent
|
||||
import org.mosad.teapod.util.setDrawableTop
|
||||
import org.mosad.teapod.util.showFragment
|
||||
import org.mosad.teapod.util.toItemMediaList
|
||||
|
||||
class HomeFragment : Fragment() {
|
||||
|
||||
|
@ -188,7 +191,7 @@ class HomeFragment : Fragment() {
|
|||
private fun setShimmerLayoutItemSize(shimmerLayout: ShimmerFrameLayout) {
|
||||
(shimmerLayout.children.first() as? LinearLayout)?.children?.forEach { child ->
|
||||
child.layoutParams.apply {
|
||||
width = (binding.root.measuredWidth / requireContext().resources.getInteger(R.integer.item_media_columns)) - itemOffset
|
||||
width = (resources.displayMetrics.widthPixels / requireContext().resources.getInteger(R.integer.item_media_columns)) - itemOffset
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -26,6 +26,7 @@ import org.mosad.teapod.util.playerIntent
|
|||
import org.mosad.teapod.util.tmdb.TMDBApiController
|
||||
import org.mosad.teapod.util.tmdb.TMDBMovie
|
||||
import org.mosad.teapod.util.tmdb.TMDBTVShow
|
||||
import org.mosad.teapod.util.toItemMediaList
|
||||
|
||||
/**
|
||||
* The media detail fragment.
|
||||
|
@ -126,6 +127,20 @@ class MediaFragment(private val mediaIdStr: String) : Fragment() {
|
|||
pagerAdapter.notifyItemInserted(fragments.indexOf(it))
|
||||
}
|
||||
|
||||
// if has similar titles
|
||||
if (model.similarTo.total > 0) {
|
||||
MediaFragmentSimilar(model.similarTo.toItemMediaList()).also {
|
||||
fragments.add(it)
|
||||
pagerAdapter.notifyItemInserted(fragments.indexOf(it))
|
||||
}
|
||||
}
|
||||
|
||||
// disable scrolling on appbar, if no tabs where added
|
||||
if(fragments.isEmpty()) {
|
||||
val params = binding.linearMedia.layoutParams as AppBarLayout.LayoutParams
|
||||
params.scrollFlags = 0 // clear all scroll flags
|
||||
}
|
||||
|
||||
// specific gui (via tmdb)
|
||||
when (tmdbResult) {
|
||||
is TMDBTVShow -> {
|
||||
|
@ -154,20 +169,6 @@ class MediaFragment(private val mediaIdStr: String) : Fragment() {
|
|||
}
|
||||
}
|
||||
|
||||
// if has similar titles
|
||||
if (model.similarTo.total > 0) {
|
||||
MediaFragmentSimilar().also {
|
||||
fragments.add(it)
|
||||
pagerAdapter.notifyItemInserted(fragments.indexOf(it))
|
||||
}
|
||||
}
|
||||
|
||||
// disable scrolling on appbar, if no tabs where added
|
||||
if(fragments.isEmpty()) {
|
||||
val params = binding.linearMedia.layoutParams as AppBarLayout.LayoutParams
|
||||
params.scrollFlags = 0 // clear all scroll flags
|
||||
}
|
||||
|
||||
binding.frameLoading.visibility = View.GONE // hide loading indicator
|
||||
}
|
||||
|
||||
|
|
|
@ -27,17 +27,13 @@ import android.view.LayoutInflater
|
|||
import android.view.View
|
||||
import android.view.ViewGroup
|
||||
import androidx.fragment.app.Fragment
|
||||
import androidx.fragment.app.viewModels
|
||||
import org.mosad.teapod.databinding.FragmentMediaSimilarBinding
|
||||
import org.mosad.teapod.ui.activity.main.viewmodel.MediaFragmentViewModel
|
||||
import org.mosad.teapod.util.ItemMedia
|
||||
import org.mosad.teapod.util.adapter.MediaItemListAdapter
|
||||
import org.mosad.teapod.util.decoration.MediaItemDecoration
|
||||
import org.mosad.teapod.util.showFragment
|
||||
import org.mosad.teapod.util.toItemMediaList
|
||||
|
||||
class MediaFragmentSimilar : Fragment() {
|
||||
class MediaFragmentSimilar(val items: List<ItemMedia>) : Fragment() {
|
||||
|
||||
private val model: MediaFragmentViewModel by viewModels({requireParentFragment()})
|
||||
private lateinit var binding: FragmentMediaSimilarBinding
|
||||
|
||||
override fun onCreateView(inflater: LayoutInflater, container: ViewGroup?, savedInstanceState: Bundle?): View {
|
||||
|
@ -55,6 +51,6 @@ class MediaFragmentSimilar : Fragment() {
|
|||
)
|
||||
|
||||
val adapterSimilar = binding.recyclerMediaSimilar.adapter as MediaItemListAdapter
|
||||
adapterSimilar.submitList(model.similarTo.toItemMediaList())
|
||||
adapterSimilar.submitList(items)
|
||||
}
|
||||
}
|
|
@ -8,18 +8,14 @@
|
|||
<com.google.android.material.card.MaterialCardView
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginStart="4dp"
|
||||
android:layout_marginEnd="3dp"
|
||||
android:backgroundTint="?themeSecondary"
|
||||
app:cardCornerRadius="7dp"
|
||||
app:cardElevation="4dp"
|
||||
app:layout_constrainedWidth="true"
|
||||
app:cardUseCompatPadding="true"
|
||||
app:layout_constraintBottom_toBottomOf="parent"
|
||||
app:layout_constraintEnd_toEndOf="parent"
|
||||
app:layout_constraintStart_toStartOf="parent"
|
||||
app:layout_constraintTop_toTopOf="parent"
|
||||
app:layout_constraintWidth_default="percent"
|
||||
app:layout_constraintWidth_percent="0.96">
|
||||
app:layout_constraintTop_toTopOf="parent">
|
||||
|
||||
<androidx.constraintlayout.widget.ConstraintLayout
|
||||
android:layout_width="match_parent"
|
||||
|
|
|
@ -18,6 +18,9 @@
|
|||
<!-- search fragment -->
|
||||
<string name="search_hint">Suche nach Filmen und Serien</string>
|
||||
|
||||
<!-- my lists fragment -->
|
||||
<string name="downloads">Downloads</string>
|
||||
|
||||
<!-- media fragment -->
|
||||
<string name="button_play">Abspielen</string>
|
||||
<plurals name="text_episodes_count">
|
||||
|
|
|
@ -21,6 +21,10 @@
|
|||
<string name="media_poster_desc" translatable="false">poster</string>
|
||||
<string name="media_poster_backdrop_desc" translatable="false">poster backdrop</string>
|
||||
|
||||
<!-- my lists fragment -->
|
||||
<string name="crunchylists" translatable="false">Crunchylists</string>
|
||||
<string name="downloads">Downloads</string>
|
||||
|
||||
<!-- media fragment -->
|
||||
<string name="button_play">Play</string>
|
||||
<string name="text_title_ex" translatable="false">A Silent Voice</string>
|
||||
|
|
Loading…
Reference in New Issue