[LeakCanary] OnboardingFragment: Rework viewpager2 adapter
Also re-arrange code a bit for better readbility Signed-off-by: Aayush Gupta <aayushgupta219@gmail.com>
This commit is contained in:
@@ -22,7 +22,8 @@ package com.aurora.store.view.ui.onboarding
|
||||
import android.os.Bundle
|
||||
import android.view.View
|
||||
import androidx.fragment.app.Fragment
|
||||
import androidx.fragment.app.FragmentActivity
|
||||
import androidx.fragment.app.FragmentManager
|
||||
import androidx.lifecycle.Lifecycle
|
||||
import androidx.navigation.fragment.findNavController
|
||||
import androidx.viewpager2.adapter.FragmentStateAdapter
|
||||
import androidx.viewpager2.widget.ViewPager2.OnPageChangeCallback
|
||||
@@ -56,6 +57,27 @@ class OnboardingFragment : Fragment(R.layout.fragment_onboarding) {
|
||||
private var _binding: FragmentOnboardingBinding? = null
|
||||
private val binding get() = _binding!!
|
||||
|
||||
private var lastPosition = 0
|
||||
|
||||
internal class PagerAdapter(fragmentManager: FragmentManager, lifecycle: Lifecycle) :
|
||||
FragmentStateAdapter(fragmentManager, lifecycle) {
|
||||
override fun createFragment(position: Int): Fragment {
|
||||
when (position) {
|
||||
0 -> return WelcomeFragment()
|
||||
1 -> return InstallerFragment()
|
||||
2 -> return ThemeFragment()
|
||||
3 -> return AccentFragment()
|
||||
4 -> return AppLinksFragment()
|
||||
5 -> return PermissionsFragment()
|
||||
}
|
||||
return Fragment()
|
||||
}
|
||||
|
||||
override fun getItemCount(): Int {
|
||||
return 6
|
||||
}
|
||||
}
|
||||
|
||||
override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
|
||||
super.onViewCreated(view, savedInstanceState)
|
||||
_binding = FragmentOnboardingBinding.bind(view)
|
||||
@@ -66,14 +88,31 @@ class OnboardingFragment : Fragment(R.layout.fragment_onboarding) {
|
||||
loadDefaultPreferences()
|
||||
}
|
||||
|
||||
attachViewPager()
|
||||
// ViewPager2
|
||||
binding.viewpager2.apply {
|
||||
adapter = PagerAdapter(childFragmentManager, viewLifecycleOwner.lifecycle)
|
||||
isUserInputEnabled = false
|
||||
setCurrentItem(0, true)
|
||||
registerOnPageChangeCallback(object : OnPageChangeCallback() {
|
||||
override fun onPageSelected(position: Int) {
|
||||
activity?.runOnUiThread {
|
||||
lastPosition = position
|
||||
refreshButtonState()
|
||||
}
|
||||
}
|
||||
})
|
||||
}
|
||||
|
||||
TabLayoutMediator(binding.tabLayout, binding.viewpager2, true) { tab, position ->
|
||||
tab.text = (position + 1).toString()
|
||||
}.attach()
|
||||
|
||||
binding.btnForward.setOnClickListener {
|
||||
moveForward()
|
||||
binding.viewpager2.setCurrentItem(binding.viewpager2.currentItem + 1, true)
|
||||
}
|
||||
|
||||
binding.btnBackward.setOnClickListener {
|
||||
moveBackward()
|
||||
binding.viewpager2.setCurrentItem(binding.viewpager2.currentItem - 1, true)
|
||||
}
|
||||
|
||||
if (!Preferences.getBoolean(view.context, Preferences.PREFERENCE_TOS_READ)) {
|
||||
@@ -86,37 +125,10 @@ class OnboardingFragment : Fragment(R.layout.fragment_onboarding) {
|
||||
_binding = null
|
||||
}
|
||||
|
||||
private fun attachViewPager() {
|
||||
binding.viewpager2.adapter = PagerAdapter(requireActivity())
|
||||
binding.viewpager2.isUserInputEnabled = false
|
||||
binding.viewpager2.setCurrentItem(0, true)
|
||||
binding.viewpager2.registerOnPageChangeCallback(object : OnPageChangeCallback() {
|
||||
override fun onPageSelected(position: Int) {
|
||||
activity?.runOnUiThread {
|
||||
lastPosition = position
|
||||
refreshButtonState()
|
||||
}
|
||||
}
|
||||
})
|
||||
|
||||
TabLayoutMediator(binding.tabLayout, binding.viewpager2, true) { tab, position ->
|
||||
tab.text = (position + 1).toString()
|
||||
}.attach()
|
||||
}
|
||||
|
||||
private fun moveForward() {
|
||||
binding.viewpager2.setCurrentItem(binding.viewpager2.currentItem + 1, true)
|
||||
}
|
||||
|
||||
private fun moveBackward() {
|
||||
binding.viewpager2.setCurrentItem(binding.viewpager2.currentItem - 1, true)
|
||||
}
|
||||
|
||||
var lastPosition = 0
|
||||
|
||||
fun refreshButtonState() {
|
||||
binding.btnBackward.isEnabled = lastPosition != 0
|
||||
binding.btnForward.isEnabled = lastPosition != 5
|
||||
|
||||
if (lastPosition == 5) {
|
||||
binding.btnForward.text = getString(R.string.action_finish)
|
||||
binding.btnForward.isEnabled = true
|
||||
@@ -165,23 +177,4 @@ class OnboardingFragment : Fragment(R.layout.fragment_onboarding) {
|
||||
save(PREFERENCE_UPDATES_EXTENDED, false)
|
||||
save(PREFERENCE_UPDATES_CHECK, true)
|
||||
}
|
||||
|
||||
internal class PagerAdapter(fragmentActivity: FragmentActivity) :
|
||||
FragmentStateAdapter(fragmentActivity) {
|
||||
override fun createFragment(position: Int): Fragment {
|
||||
when (position) {
|
||||
0 -> return WelcomeFragment()
|
||||
1 -> return InstallerFragment()
|
||||
2 -> return ThemeFragment()
|
||||
3 -> return AccentFragment()
|
||||
4 -> return AppLinksFragment()
|
||||
5 -> return PermissionsFragment()
|
||||
}
|
||||
return Fragment()
|
||||
}
|
||||
|
||||
override fun getItemCount(): Int {
|
||||
return 6
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user