Răsfoiți Sursa

android: Fix first time setup scrolling bug

If you quickly scrolled from the second page to the first and then back, the next/back buttons would disappear.
Charles Lombardo 3 ani în urmă
părinte
comite
d8c102444c

+ 15 - 18
src/android/app/src/main/java/org/yuzu/yuzu_emu/fragments/SetupFragment.kt

@@ -110,23 +110,24 @@ class SetupFragment : Fragment() {
         }
 
         binding.viewPager2.registerOnPageChangeCallback(object : OnPageChangeCallback() {
-            override fun onPageScrolled(
-                position: Int,
-                positionOffset: Float,
-                positionOffsetPixels: Int
-            ) {
-                super.onPageScrolled(position, positionOffset, positionOffsetPixels)
-                if (position == 0) {
-                    hideView(binding.buttonBack)
-                } else {
-                    showView(binding.buttonBack)
-                }
+            var previousPosition: Int = 0
 
-                if (position == pages.size - 1 || position == 0) {
+            override fun onPageSelected(position: Int) {
+                super.onPageSelected(position)
+
+                if (position == 1 && previousPosition == 0) {
+                    showView(binding.buttonNext)
+                    showView(binding.buttonBack)
+                } else if (position == 0 && previousPosition == 1) {
+                    hideView(binding.buttonBack)
+                    hideView(binding.buttonNext)
+                } else if (position == pages.size - 1 && previousPosition == pages.size - 2) {
                     hideView(binding.buttonNext)
-                } else {
+                } else if (position == pages.size - 2 && previousPosition == pages.size - 1) {
                     showView(binding.buttonNext)
                 }
+
+                previousPosition = position
             }
         })
 
@@ -154,10 +155,6 @@ class SetupFragment : Fragment() {
     }
 
     private fun showView(view: View) {
-        if (view.visibility == View.VISIBLE) {
-            return
-        }
-
         view.apply {
             alpha = 0f
             visibility = View.VISIBLE
@@ -169,7 +166,7 @@ class SetupFragment : Fragment() {
     }
 
     private fun hideView(view: View) {
-        if (view.visibility == View.GONE) {
+        if (view.visibility == View.INVISIBLE) {
             return
         }
 

+ 2 - 0
src/android/app/src/main/res/layout/fragment_setup.xml

@@ -22,6 +22,7 @@
         android:layout_height="wrap_content"
         android:layout_margin="16dp"
         android:text="@string/next"
+        android:visibility="invisible"
         app:layout_constraintBottom_toBottomOf="parent"
         app:layout_constraintEnd_toEndOf="parent" />
 
@@ -32,6 +33,7 @@
         android:layout_height="wrap_content"
         android:layout_margin="16dp"
         android:text="@string/back"
+        android:visibility="invisible"
         app:layout_constraintBottom_toBottomOf="parent"
         app:layout_constraintStart_toStartOf="parent" />