From 4ac29530cd0decd5e9e16087c777136cb35889ff Mon Sep 17 00:00:00 2001 From: Sawyer Blatz Date: Mon, 30 Mar 2020 12:07:00 -0700 Subject: [PATCH] Issue #9132: Update to search animation for top toolbar (#9524) * let animation in top toolbar mode play nicely. * remove duplicate methods, make code readable. * migrate getToolbarNavOptions method to BrowserAnimator, one method to rule them all. * Update linting Co-authored-by: ahmedmamdouh13 --- .../mozilla/fenix/browser/BrowserAnimator.kt | 24 +++++++++++++++++-- .../toolbar/BrowserToolbarController.kt | 8 +++---- .../org/mozilla/fenix/home/HomeFragment.kt | 9 +++---- 3 files changed, 31 insertions(+), 10 deletions(-) diff --git a/app/src/main/java/org/mozilla/fenix/browser/BrowserAnimator.kt b/app/src/main/java/org/mozilla/fenix/browser/BrowserAnimator.kt index 8f465d767..53ae63804 100644 --- a/app/src/main/java/org/mozilla/fenix/browser/BrowserAnimator.kt +++ b/app/src/main/java/org/mozilla/fenix/browser/BrowserAnimator.kt @@ -5,6 +5,7 @@ package org.mozilla.fenix.browser import android.animation.ValueAnimator +import android.content.Context import android.graphics.Color import android.graphics.drawable.ColorDrawable import android.os.Bundle @@ -15,10 +16,13 @@ import androidx.core.graphics.drawable.toDrawable import androidx.fragment.app.Fragment import androidx.lifecycle.LifecycleCoroutineScope import androidx.lifecycle.lifecycleScope +import androidx.navigation.NavOptions import kotlinx.coroutines.Dispatchers import kotlinx.coroutines.delay import kotlinx.coroutines.launch import mozilla.components.concept.engine.EngineView +import org.mozilla.fenix.R +import org.mozilla.fenix.ext.settings import java.lang.ref.WeakReference /** @@ -43,8 +47,10 @@ class BrowserAnimator( private val browserZoomInValueAnimator = ValueAnimator.ofFloat(0f, END_ANIMATOR_VALUE).apply { addUpdateListener { - unwrappedSwipeRefresh?.scaleX = STARTING_XY_SCALE + XY_SCALE_MULTIPLIER * it.animatedFraction - unwrappedSwipeRefresh?.scaleY = STARTING_XY_SCALE + XY_SCALE_MULTIPLIER * it.animatedFraction + unwrappedSwipeRefresh?.scaleX = + STARTING_XY_SCALE + XY_SCALE_MULTIPLIER * it.animatedFraction + unwrappedSwipeRefresh?.scaleY = + STARTING_XY_SCALE + XY_SCALE_MULTIPLIER * it.animatedFraction unwrappedSwipeRefresh?.alpha = it.animatedFraction } @@ -154,5 +160,19 @@ class BrowserAnimator( private const val END_ANIMATOR_VALUE = 500f private const val XY_SCALE_MULTIPLIER = .05f private const val STARTING_XY_SCALE = .95f + + fun getToolbarNavOptions(context: Context): NavOptions { + val navOptions = NavOptions.Builder() + + if (!context.settings().shouldUseBottomToolbar) { + navOptions.setEnterAnim(R.anim.fade_in) + navOptions.setExitAnim(R.anim.fade_out) + } else { + navOptions.setEnterAnim(R.anim.fade_in_up) + navOptions.setExitAnim(R.anim.fade_out_down) + } + + return navOptions.build() + } } } diff --git a/app/src/main/java/org/mozilla/fenix/components/toolbar/BrowserToolbarController.kt b/app/src/main/java/org/mozilla/fenix/components/toolbar/BrowserToolbarController.kt index 7f01d04d4..c39dac136 100644 --- a/app/src/main/java/org/mozilla/fenix/components/toolbar/BrowserToolbarController.kt +++ b/app/src/main/java/org/mozilla/fenix/components/toolbar/BrowserToolbarController.kt @@ -24,6 +24,7 @@ import mozilla.components.support.ktx.kotlin.isUrl import org.mozilla.fenix.NavGraphDirections import org.mozilla.fenix.R import org.mozilla.fenix.browser.BrowserAnimator +import org.mozilla.fenix.browser.BrowserAnimator.Companion.getToolbarNavOptions import org.mozilla.fenix.browser.BrowserFragment import org.mozilla.fenix.browser.BrowserFragmentDirections import org.mozilla.fenix.browser.browsingmode.BrowsingModeManager @@ -91,7 +92,7 @@ class DefaultBrowserToolbarController( pastedText = text ) - navController.nav(R.id.browserFragment, directions) + navController.nav(R.id.browserFragment, directions, getToolbarNavOptions(activity)) } } @@ -116,7 +117,7 @@ class DefaultBrowserToolbarController( currentSession?.id ) - navController.nav(R.id.browserFragment, directions) + navController.nav(R.id.browserFragment, directions, getToolbarNavOptions(activity)) } } @@ -131,8 +132,7 @@ class DefaultBrowserToolbarController( ToolbarMenu.Item.AddToHomeScreen -> activity.settings().installPwaOpened = true is ToolbarMenu.Item.ReaderMode -> activity.settings().readerModeOpened = true ToolbarMenu.Item.OpenInApp -> activity.settings().openInAppOpened = true - else -> { - } + else -> { } } } } diff --git a/app/src/main/java/org/mozilla/fenix/home/HomeFragment.kt b/app/src/main/java/org/mozilla/fenix/home/HomeFragment.kt index ee3d3eb41..abbe1059a 100644 --- a/app/src/main/java/org/mozilla/fenix/home/HomeFragment.kt +++ b/app/src/main/java/org/mozilla/fenix/home/HomeFragment.kt @@ -79,6 +79,7 @@ import mozilla.components.support.ktx.kotlinx.coroutines.flow.ifChanged import org.mozilla.fenix.BrowserDirection import org.mozilla.fenix.HomeActivity import org.mozilla.fenix.R +import org.mozilla.fenix.browser.BrowserAnimator.Companion.getToolbarNavOptions import org.mozilla.fenix.browser.browsingmode.BrowsingMode import org.mozilla.fenix.components.FenixSnackbar import org.mozilla.fenix.components.PrivateShortcutCreateManager @@ -246,9 +247,9 @@ class HomeFragment : Fragment() { if (!shouldUseBottomToolbar) { view.toolbarLayout.layoutParams = CoordinatorLayout.LayoutParams( - ConstraintLayout.LayoutParams.MATCH_PARENT, - ConstraintLayout.LayoutParams.WRAP_CONTENT - ) + ConstraintLayout.LayoutParams.MATCH_PARENT, + ConstraintLayout.LayoutParams.WRAP_CONTENT + ) .apply { gravity = Gravity.TOP } @@ -591,7 +592,7 @@ class HomeFragment : Fragment() { sessionId = null ) - nav(R.id.homeFragment, directions) + nav(R.id.homeFragment, directions, getToolbarNavOptions(requireContext())) } private fun openSettingsScreen() {