diff --git a/src/android/app/src/main/java/org/yuzu/yuzu_emu/model/HomeViewModel.kt b/src/android/app/src/main/java/org/yuzu/yuzu_emu/model/HomeViewModel.kt index 74f12429cc..b3f4188cd2 100644 --- a/src/android/app/src/main/java/org/yuzu/yuzu_emu/model/HomeViewModel.kt +++ b/src/android/app/src/main/java/org/yuzu/yuzu_emu/model/HomeViewModel.kt @@ -8,10 +8,20 @@ class HomeViewModel : ViewModel() { private val _navigationVisible = MutableLiveData(true) val navigationVisible: LiveData get() = _navigationVisible - fun setNavigationVisible(visible: Boolean) { + private val _statusBarShadeVisible = MutableLiveData(true) + val statusBarShadeVisible: LiveData get() = _statusBarShadeVisible + + fun setNavigationVisibility(visible: Boolean) { if (_navigationVisible.value == visible) { return } _navigationVisible.value = visible } + + fun setStatusBarShadeVisibility(visible: Boolean) { + if (_statusBarShadeVisible.value == visible) { + return + } + _statusBarShadeVisible.value = visible + } } diff --git a/src/android/app/src/main/java/org/yuzu/yuzu_emu/ui/GamesFragment.kt b/src/android/app/src/main/java/org/yuzu/yuzu_emu/ui/GamesFragment.kt index f542fe2de7..c6bbc3c652 100644 --- a/src/android/app/src/main/java/org/yuzu/yuzu_emu/ui/GamesFragment.kt +++ b/src/android/app/src/main/java/org/yuzu/yuzu_emu/ui/GamesFragment.kt @@ -143,9 +143,15 @@ class GamesFragment : Fragment() { _binding = null } - private fun searchShown() = homeViewModel.setNavigationVisible(false) + private fun searchShown() { + homeViewModel.setNavigationVisibility(false) + homeViewModel.setStatusBarShadeVisibility(false) + } - private fun searchHidden() = homeViewModel.setNavigationVisible(true) + private fun searchHidden() { + homeViewModel.setNavigationVisibility(true) + homeViewModel.setStatusBarShadeVisibility(true) + } private inner class ScoredGame(val score: Double, val item: Game) diff --git a/src/android/app/src/main/java/org/yuzu/yuzu_emu/ui/main/MainActivity.kt b/src/android/app/src/main/java/org/yuzu/yuzu_emu/ui/main/MainActivity.kt index c7d399846c..e47866030f 100644 --- a/src/android/app/src/main/java/org/yuzu/yuzu_emu/ui/main/MainActivity.kt +++ b/src/android/app/src/main/java/org/yuzu/yuzu_emu/ui/main/MainActivity.kt @@ -75,6 +75,9 @@ class MainActivity : AppCompatActivity() { homeViewModel.navigationVisible.observe(this) { visible -> showNavigation(visible) } + homeViewModel.statusBarShadeVisible.observe(this) { visible -> + showStatusBarShade(visible) + } // Dismiss previous notifications (should not happen unless a crash occurred) EmulationActivity.tryDismissRunningNotification(this) @@ -83,25 +86,6 @@ class MainActivity : AppCompatActivity() { } private fun showNavigation(visible: Boolean) { - // TODO: This should be decoupled from navigation in the future - binding.statusBarShade.animate().apply { - if (visible) { - binding.statusBarShade.visibility = View.VISIBLE - binding.statusBarShade.translationY = binding.statusBarShade.height.toFloat() * -2 - duration = 300 - translationY(0f) - interpolator = PathInterpolator(0.05f, 0.7f, 0.1f, 1f) - } else { - duration = 300 - translationY(binding.navigationBar.height.toFloat() * -2) - interpolator = PathInterpolator(0.3f, 0f, 0.8f, 0.15f) - } - }.withEndAction { - if (!visible) { - binding.statusBarShade.visibility = View.INVISIBLE - } - }.start() - binding.navigationBar.animate().apply { if (visible) { binding.navigationBar.visibility = View.VISIBLE @@ -121,6 +105,26 @@ class MainActivity : AppCompatActivity() { }.start() } + private fun showStatusBarShade(visible: Boolean) { + binding.statusBarShade.animate().apply { + if (visible) { + binding.statusBarShade.visibility = View.VISIBLE + binding.statusBarShade.translationY = binding.statusBarShade.height.toFloat() * -2 + duration = 300 + translationY(0f) + interpolator = PathInterpolator(0.05f, 0.7f, 0.1f, 1f) + } else { + duration = 300 + translationY(binding.navigationBar.height.toFloat() * -2) + interpolator = PathInterpolator(0.3f, 0f, 0.8f, 0.15f) + } + }.withEndAction { + if (!visible) { + binding.statusBarShade.visibility = View.INVISIBLE + } + }.start() + } + override fun onDestroy() { EmulationActivity.tryDismissRunningNotification(this) super.onDestroy()