From 67bb28d0276717ac4aabadd897598645096f63d8 Mon Sep 17 00:00:00 2001 From: aayush262 Date: Thu, 25 Jan 2024 00:23:19 +0530 Subject: [PATCH] scroll to top --- .../dantotsu/media/anime/AnimeWatchFragment.kt | 17 +++++++++++++++++ .../dantotsu/media/manga/MangaReadFragment.kt | 17 +++++++++++++++++ .../main/res/layout/fragment_anime_watch.xml | 18 ++++++++++++++++++ 3 files changed, 52 insertions(+) diff --git a/app/src/main/java/ani/dantotsu/media/anime/AnimeWatchFragment.kt b/app/src/main/java/ani/dantotsu/media/anime/AnimeWatchFragment.kt index 487bf207..6a4954ad 100644 --- a/app/src/main/java/ani/dantotsu/media/anime/AnimeWatchFragment.kt +++ b/app/src/main/java/ani/dantotsu/media/anime/AnimeWatchFragment.kt @@ -25,6 +25,7 @@ import androidx.media3.common.util.UnstableApi import androidx.media3.exoplayer.offline.DownloadService import androidx.recyclerview.widget.ConcatAdapter import androidx.recyclerview.widget.GridLayoutManager +import androidx.recyclerview.widget.RecyclerView import androidx.viewpager2.widget.ViewPager2 import ani.dantotsu.* import ani.dantotsu.databinding.FragmentAnimeWatchBinding @@ -144,6 +145,22 @@ class AnimeWatchFragment : Fragment() { binding.animeSourceRecycler.layoutManager = gridLayoutManager + binding.ScrollTop.setOnClickListener { + binding.animeSourceRecycler.scrollToPosition(10) + binding.animeSourceRecycler.smoothScrollToPosition(0) + } + binding.animeSourceRecycler.addOnScrollListener(object : RecyclerView.OnScrollListener() { + override fun onScrolled(recyclerView: RecyclerView, dx: Int, dy: Int) { + super.onScrolled(recyclerView, dx, dy) + + val position = gridLayoutManager.findFirstVisibleItemPosition() + if (position > 2) { + binding.ScrollTop.visibility = View.VISIBLE + } else { + binding.ScrollTop.visibility = View.GONE + } + } + }) model.scrolledToTop.observe(viewLifecycleOwner) { if (it) binding.animeSourceRecycler.scrollToPosition(0) } diff --git a/app/src/main/java/ani/dantotsu/media/manga/MangaReadFragment.kt b/app/src/main/java/ani/dantotsu/media/manga/MangaReadFragment.kt index 3153bb6a..f1e766ff 100644 --- a/app/src/main/java/ani/dantotsu/media/manga/MangaReadFragment.kt +++ b/app/src/main/java/ani/dantotsu/media/manga/MangaReadFragment.kt @@ -26,6 +26,7 @@ import androidx.fragment.app.activityViewModels import androidx.lifecycle.lifecycleScope import androidx.recyclerview.widget.ConcatAdapter import androidx.recyclerview.widget.GridLayoutManager +import androidx.recyclerview.widget.RecyclerView import androidx.viewpager2.widget.ViewPager2 import ani.dantotsu.* import ani.dantotsu.databinding.FragmentAnimeWatchBinding @@ -139,6 +140,22 @@ open class MangaReadFragment : Fragment(), ScanlatorSelectionListener { binding.animeSourceRecycler.layoutManager = gridLayoutManager + binding.ScrollTop.setOnClickListener { + binding.animeSourceRecycler.scrollToPosition(10) + binding.animeSourceRecycler.smoothScrollToPosition(0) + } + binding.animeSourceRecycler.addOnScrollListener(object : RecyclerView.OnScrollListener() { + override fun onScrolled(recyclerView: RecyclerView, dx: Int, dy: Int) { + super.onScrolled(recyclerView, dx, dy) + + val position = gridLayoutManager.findFirstVisibleItemPosition() + if (position > 2) { + binding.ScrollTop.visibility = View.VISIBLE + } else { + binding.ScrollTop.visibility = View.GONE + } + } + }) model.scrolledToTop.observe(viewLifecycleOwner) { if (it) binding.animeSourceRecycler.scrollToPosition(0) } diff --git a/app/src/main/res/layout/fragment_anime_watch.xml b/app/src/main/res/layout/fragment_anime_watch.xml index 2a65e1ea..e4e2c9ea 100644 --- a/app/src/main/res/layout/fragment_anime_watch.xml +++ b/app/src/main/res/layout/fragment_anime_watch.xml @@ -1,6 +1,7 @@ @@ -40,5 +41,22 @@ tools:itemCount="1" tools:listitem="@layout/item_anime_watch" /> + + + \ No newline at end of file