diff --git a/app/build.gradle b/app/build.gradle index f1aa9f7..f1b377e 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -69,6 +69,8 @@ dependencies { implementation "com.google.android.exoplayer:exoplayer-ui:$exo_version" implementation "com.google.android.exoplayer:extension-mediasession:$exo_version" + implementation 'com.facebook.shimmer:shimmer:0.5.0' + implementation 'com.github.bumptech.glide:glide:4.13.2' implementation 'jp.wasabeef:glide-transformations:4.3.0' diff --git a/app/src/main/java/org/mosad/teapod/ui/activity/main/fragments/HomeFragment.kt b/app/src/main/java/org/mosad/teapod/ui/activity/main/fragments/HomeFragment.kt index ff85c2d..7e3ed1f 100644 --- a/app/src/main/java/org/mosad/teapod/ui/activity/main/fragments/HomeFragment.kt +++ b/app/src/main/java/org/mosad/teapod/ui/activity/main/fragments/HomeFragment.kt @@ -27,12 +27,15 @@ import android.util.Log import android.view.LayoutInflater import android.view.View import android.view.ViewGroup +import androidx.core.view.children +import androidx.core.view.isVisible import androidx.fragment.app.Fragment import androidx.fragment.app.viewModels import androidx.lifecycle.Lifecycle import androidx.lifecycle.lifecycleScope import androidx.lifecycle.repeatOnLifecycle import com.bumptech.glide.Glide +import com.facebook.shimmer.ShimmerFrameLayout import kotlinx.coroutines.launch import org.mosad.teapod.R import org.mosad.teapod.databinding.FragmentHomeBinding @@ -161,10 +164,35 @@ class HomeFragment : Fragment() { binding.textHighlightInfo.setOnClickListener { activity?.showFragment(MediaFragment(uiState.highlightItem.id)) } + + // disable the shimmer effect and hide the shimmer layouts + binding.shimmerLayoutUpNext.apply { + stopShimmer() + isVisible = false + } + binding.shimmerLayoutWatchlist.apply { + stopShimmer() + isVisible = false + } + binding.shimmerLayoutRecommendations.apply { + stopShimmer() + isVisible = false + } + binding.shimmerLayoutNewTitles.apply { + stopShimmer() + isVisible = false + } + binding.shimmerLayoutTopTen.apply { + stopShimmer() + isVisible = false + } } private fun bindUiStateLoading() { - // currently not used + binding.root.children.filter { it is ShimmerFrameLayout }.forEach { + it as ShimmerFrameLayout + it.startShimmer() + } } private fun bindUiStateError(uiState: HomeViewModel.UiState.Error) { diff --git a/app/src/main/res/layout/fragment_home.xml b/app/src/main/res/layout/fragment_home.xml index 199b418..90cd84a 100644 --- a/app/src/main/res/layout/fragment_home.xml +++ b/app/src/main/res/layout/fragment_home.xml @@ -126,6 +126,23 @@ android:textSize="16sp" android:textStyle="bold" /> + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file