1
0
Fork 0

No issue: Simplify and speed up shared element transitions

master
Emily Kager 2019-05-30 13:44:22 -07:00 committed by Jeff Boek
parent 43a961fe73
commit 8dbed67f7f
3 changed files with 15 additions and 40 deletions

View File

@ -181,6 +181,12 @@ class BrowserFragment : Fragment(), BackHandler, CoroutineScope {
}
}
sharedElementEnterTransition =
TransitionInflater.from(context).inflateTransition(android.R.transition.move).setDuration(
SHARED_TRANSITION_MS
)
startPostponedEnterTransition()
QuickActionComponent(
view.nestedScrollQuickAction,
ActionBusFactory.get(this),
@ -223,9 +229,6 @@ class BrowserFragment : Fragment(), BackHandler, CoroutineScope {
view = view
)
sharedElementEnterTransition = TransitionInflater.from(context).inflateTransition(android.R.transition.move)
startPostponedEnterTransition()
val sessionManager = requireComponents.core.sessionManager
contextMenuFeature.set(
@ -829,6 +832,7 @@ class BrowserFragment : Fragment(), BackHandler, CoroutineScope {
}
companion object {
private const val SHARED_TRANSITION_MS = 200L
private const val TAB_ITEM_TRANSITION_NAME = "tab_item"
private const val REQUEST_CODE_DOWNLOAD_PERMISSIONS = 1
private const val REQUEST_CODE_PROMPT_PERMISSIONS = 2

View File

@ -15,16 +15,11 @@ import android.view.ViewGroup
import android.view.ViewTreeObserver
import androidx.appcompat.app.AlertDialog
import androidx.appcompat.app.AppCompatActivity
import androidx.constraintlayout.motion.widget.MotionLayout
import androidx.constraintlayout.motion.widget.MotionScene
import androidx.constraintlayout.widget.ConstraintLayout.LayoutParams.PARENT_ID
import androidx.fragment.app.Fragment
import androidx.lifecycle.Observer
import androidx.lifecycle.ViewModelProviders
import androidx.navigation.NavController
import androidx.navigation.NavDirections
import androidx.navigation.Navigation
import androidx.navigation.Navigator
import androidx.navigation.fragment.FragmentNavigator
import androidx.navigation.fragment.NavHostFragment.findNavController
import androidx.transition.TransitionInflater
@ -109,6 +104,7 @@ class HomeFragment : Fragment(), CoroutineScope, AccountObserver {
super.onCreate(savedInstanceState)
postponeEnterTransition()
sharedElementEnterTransition = TransitionInflater.from(context).inflateTransition(android.R.transition.move)
.setDuration(SHARED_TRANSITION_MS)
sessionObserver = BrowserSessionsObserver(requireComponents.core.sessionManager, singleSessionObserver) {
emitSessionChanges()
@ -202,16 +198,7 @@ class HomeFragment : Fragment(), CoroutineScope, AccountObserver {
FragmentNavigator.Extras.Builder()
.addSharedElement(toolbar_wrapper, "toolbar_wrapper_transition")
.build()
if (homeLayout.progress == 1.0F) {
Navigation.findNavController(it).navigate(directions, extras)
} else {
homeLayout.setTransitionDuration(TRANSITION_DURATION_MOTION)
homeLayout.transitionToEnd()
val listener = getTransitionListener(Navigation.findNavController(it), directions, extras)
homeLayout.setTransitionListener(listener)
}
Navigation.findNavController(it).navigate(directions, extras)
requireComponents.analytics.metrics.track(Event.SearchBarTapped(Event.SearchBarTapped.Source.HOME))
}
@ -240,26 +227,6 @@ class HomeFragment : Fragment(), CoroutineScope, AccountObserver {
homeDividerShadow.bringToFront()
}
private fun getTransitionListener(
navController: NavController,
directions: NavDirections,
extras: Navigator.Extras
) = object : MotionLayout.TransitionListener {
override fun onTransitionTrigger(p0: MotionLayout?, p1: Int, p2: Boolean, p3: Float) {}
override fun allowsTransition(p0: MotionScene.Transition?): Boolean {
return true
}
override fun onTransitionStarted(p0: MotionLayout?, p1: Int, p2: Int) {
navController.navigate(directions, extras)
}
override fun onTransitionChange(p0: MotionLayout?, p1: Int, p2: Int, p3: Float) {}
override fun onTransitionCompleted(p0: MotionLayout?, p1: Int) {}
}
override fun onDestroyView() {
homeMenu = null
job.cancel()
@ -689,7 +656,7 @@ class HomeFragment : Fragment(), CoroutineScope, AccountObserver {
override fun onProfileUpdated(profile: Profile) { emitAccountChanges() }
companion object {
private const val TRANSITION_DURATION_MOTION = 400
private const val SHARED_TRANSITION_MS = 200L
private const val TAB_ITEM_TRANSITION_NAME = "tab_item"
private const val toolbarPaddingDp = 12f
private const val MOTION_LAYOUT_PROGRESS_ROUND_POINT = 0.25f

View File

@ -63,7 +63,10 @@ class SearchFragment : Fragment(), BackHandler {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
postponeEnterTransition()
sharedElementEnterTransition = TransitionInflater.from(context).inflateTransition(android.R.transition.move)
sharedElementEnterTransition =
TransitionInflater.from(context).inflateTransition(android.R.transition.move).setDuration(
SHARED_TRANSITION_MS
)
}
override fun onCreateView(
@ -321,6 +324,7 @@ class SearchFragment : Fragment(), BackHandler {
}
companion object {
private const val SHARED_TRANSITION_MS = 150L
private const val REQUEST_CODE_CAMERA_PERMISSIONS = 1
}
}