1
0
Fork 0

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 <ahmedmamdouh13196@gmail.com>
master
Sawyer Blatz 2020-03-30 12:07:00 -07:00 committed by GitHub
parent 3d55578242
commit 4ac29530cd
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
3 changed files with 31 additions and 10 deletions

View File

@ -5,6 +5,7 @@
package org.mozilla.fenix.browser package org.mozilla.fenix.browser
import android.animation.ValueAnimator import android.animation.ValueAnimator
import android.content.Context
import android.graphics.Color import android.graphics.Color
import android.graphics.drawable.ColorDrawable import android.graphics.drawable.ColorDrawable
import android.os.Bundle import android.os.Bundle
@ -15,10 +16,13 @@ import androidx.core.graphics.drawable.toDrawable
import androidx.fragment.app.Fragment import androidx.fragment.app.Fragment
import androidx.lifecycle.LifecycleCoroutineScope import androidx.lifecycle.LifecycleCoroutineScope
import androidx.lifecycle.lifecycleScope import androidx.lifecycle.lifecycleScope
import androidx.navigation.NavOptions
import kotlinx.coroutines.Dispatchers import kotlinx.coroutines.Dispatchers
import kotlinx.coroutines.delay import kotlinx.coroutines.delay
import kotlinx.coroutines.launch import kotlinx.coroutines.launch
import mozilla.components.concept.engine.EngineView import mozilla.components.concept.engine.EngineView
import org.mozilla.fenix.R
import org.mozilla.fenix.ext.settings
import java.lang.ref.WeakReference import java.lang.ref.WeakReference
/** /**
@ -43,8 +47,10 @@ class BrowserAnimator(
private val browserZoomInValueAnimator = ValueAnimator.ofFloat(0f, END_ANIMATOR_VALUE).apply { private val browserZoomInValueAnimator = ValueAnimator.ofFloat(0f, END_ANIMATOR_VALUE).apply {
addUpdateListener { addUpdateListener {
unwrappedSwipeRefresh?.scaleX = STARTING_XY_SCALE + XY_SCALE_MULTIPLIER * it.animatedFraction unwrappedSwipeRefresh?.scaleX =
unwrappedSwipeRefresh?.scaleY = STARTING_XY_SCALE + XY_SCALE_MULTIPLIER * it.animatedFraction STARTING_XY_SCALE + XY_SCALE_MULTIPLIER * it.animatedFraction
unwrappedSwipeRefresh?.scaleY =
STARTING_XY_SCALE + XY_SCALE_MULTIPLIER * it.animatedFraction
unwrappedSwipeRefresh?.alpha = it.animatedFraction unwrappedSwipeRefresh?.alpha = it.animatedFraction
} }
@ -154,5 +160,19 @@ class BrowserAnimator(
private const val END_ANIMATOR_VALUE = 500f private const val END_ANIMATOR_VALUE = 500f
private const val XY_SCALE_MULTIPLIER = .05f private const val XY_SCALE_MULTIPLIER = .05f
private const val STARTING_XY_SCALE = .95f 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()
}
} }
} }

View File

@ -24,6 +24,7 @@ import mozilla.components.support.ktx.kotlin.isUrl
import org.mozilla.fenix.NavGraphDirections import org.mozilla.fenix.NavGraphDirections
import org.mozilla.fenix.R import org.mozilla.fenix.R
import org.mozilla.fenix.browser.BrowserAnimator 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.BrowserFragment
import org.mozilla.fenix.browser.BrowserFragmentDirections import org.mozilla.fenix.browser.BrowserFragmentDirections
import org.mozilla.fenix.browser.browsingmode.BrowsingModeManager import org.mozilla.fenix.browser.browsingmode.BrowsingModeManager
@ -91,7 +92,7 @@ class DefaultBrowserToolbarController(
pastedText = text pastedText = text
) )
navController.nav(R.id.browserFragment, directions) navController.nav(R.id.browserFragment, directions, getToolbarNavOptions(activity))
} }
} }
@ -116,7 +117,7 @@ class DefaultBrowserToolbarController(
currentSession?.id 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 ToolbarMenu.Item.AddToHomeScreen -> activity.settings().installPwaOpened = true
is ToolbarMenu.Item.ReaderMode -> activity.settings().readerModeOpened = true is ToolbarMenu.Item.ReaderMode -> activity.settings().readerModeOpened = true
ToolbarMenu.Item.OpenInApp -> activity.settings().openInAppOpened = true ToolbarMenu.Item.OpenInApp -> activity.settings().openInAppOpened = true
else -> { else -> { }
}
} }
} }
} }

View File

@ -79,6 +79,7 @@ import mozilla.components.support.ktx.kotlinx.coroutines.flow.ifChanged
import org.mozilla.fenix.BrowserDirection import org.mozilla.fenix.BrowserDirection
import org.mozilla.fenix.HomeActivity import org.mozilla.fenix.HomeActivity
import org.mozilla.fenix.R import org.mozilla.fenix.R
import org.mozilla.fenix.browser.BrowserAnimator.Companion.getToolbarNavOptions
import org.mozilla.fenix.browser.browsingmode.BrowsingMode import org.mozilla.fenix.browser.browsingmode.BrowsingMode
import org.mozilla.fenix.components.FenixSnackbar import org.mozilla.fenix.components.FenixSnackbar
import org.mozilla.fenix.components.PrivateShortcutCreateManager import org.mozilla.fenix.components.PrivateShortcutCreateManager
@ -246,9 +247,9 @@ class HomeFragment : Fragment() {
if (!shouldUseBottomToolbar) { if (!shouldUseBottomToolbar) {
view.toolbarLayout.layoutParams = CoordinatorLayout.LayoutParams( view.toolbarLayout.layoutParams = CoordinatorLayout.LayoutParams(
ConstraintLayout.LayoutParams.MATCH_PARENT, ConstraintLayout.LayoutParams.MATCH_PARENT,
ConstraintLayout.LayoutParams.WRAP_CONTENT ConstraintLayout.LayoutParams.WRAP_CONTENT
) )
.apply { .apply {
gravity = Gravity.TOP gravity = Gravity.TOP
} }
@ -591,7 +592,7 @@ class HomeFragment : Fragment() {
sessionId = null sessionId = null
) )
nav(R.id.homeFragment, directions) nav(R.id.homeFragment, directions, getToolbarNavOptions(requireContext()))
} }
private fun openSettingsScreen() { private fun openSettingsScreen() {