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