diff --git a/app/src/main/java/org/mozilla/fenix/components/toolbar/ToolbarComponent.kt b/app/src/main/java/org/mozilla/fenix/components/toolbar/ToolbarComponent.kt index 63280a2a0..f7ac658aa 100644 --- a/app/src/main/java/org/mozilla/fenix/components/toolbar/ToolbarComponent.kt +++ b/app/src/main/java/org/mozilla/fenix/components/toolbar/ToolbarComponent.kt @@ -47,6 +47,7 @@ class ToolbarComponent( ) init { + getView().transitionName = "toolbar_transition" bind() applyTheme() } 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 7d30e28d8..e10620255 100644 --- a/app/src/main/java/org/mozilla/fenix/home/HomeFragment.kt +++ b/app/src/main/java/org/mozilla/fenix/home/HomeFragment.kt @@ -55,6 +55,7 @@ import org.mozilla.fenix.ext.urlToTrimmedHost import org.mozilla.fenix.home.sessioncontrol.CollectionAction import org.mozilla.fenix.home.sessioncontrol.Mode import org.mozilla.fenix.home.sessioncontrol.OnboardingAction +import org.mozilla.fenix.home.sessioncontrol.OnboardingState import org.mozilla.fenix.home.sessioncontrol.SessionControlAction import org.mozilla.fenix.home.sessioncontrol.SessionControlChange import org.mozilla.fenix.home.sessioncontrol.SessionControlComponent @@ -63,7 +64,6 @@ import org.mozilla.fenix.home.sessioncontrol.SessionControlViewModel import org.mozilla.fenix.home.sessioncontrol.Tab import org.mozilla.fenix.home.sessioncontrol.TabAction import org.mozilla.fenix.home.sessioncontrol.TabCollection -import org.mozilla.fenix.home.sessioncontrol.OnboardingState import org.mozilla.fenix.lib.Do import org.mozilla.fenix.mvi.ActionBusFactory import org.mozilla.fenix.mvi.getAutoDisposeObservable @@ -171,7 +171,7 @@ class HomeFragment : Fragment(), CoroutineScope, AccountObserver { searchIcon.setBounds(0, 0, iconSize, iconSize) runBlocking(Dispatchers.Main) { - view.toolbar.setCompoundDrawables(searchIcon, null, null, null) + search_engine_icon.setImageDrawable(searchIcon) } } @@ -188,7 +188,13 @@ class HomeFragment : Fragment(), CoroutineScope, AccountObserver { invokePendingDeleteJobs() onboarding.finish() val directions = HomeFragmentDirections.actionHomeFragmentToSearchFragment(null) - Navigation.findNavController(it).navigate(directions) + val extras = + FragmentNavigator.Extras.Builder() + .addSharedElement(it, "toolbar_transition") + .addSharedElement(toolbar_wrapper, "toolbar_wrapper_transition") + .addSharedElement(search_engine_icon, "toolbar_icon_transition") + .build() + Navigation.findNavController(it).navigate(directions, extras) requireComponents.analytics.metrics.track(Event.SearchBarTapped(Event.SearchBarTapped.Source.HOME)) } diff --git a/app/src/main/java/org/mozilla/fenix/search/SearchFragment.kt b/app/src/main/java/org/mozilla/fenix/search/SearchFragment.kt index 925457635..ced178e21 100644 --- a/app/src/main/java/org/mozilla/fenix/search/SearchFragment.kt +++ b/app/src/main/java/org/mozilla/fenix/search/SearchFragment.kt @@ -19,6 +19,7 @@ import androidx.appcompat.app.AlertDialog import androidx.appcompat.app.AppCompatActivity import androidx.fragment.app.Fragment import androidx.navigation.Navigation +import androidx.transition.TransitionInflater import kotlinx.android.synthetic.main.fragment_search.* import kotlinx.android.synthetic.main.fragment_search.view.* import mozilla.components.browser.search.SearchEngine @@ -59,6 +60,12 @@ class SearchFragment : Fragment(), BackHandler { private val qrFeature = ViewBoundFeatureWrapper() private var permissionDidUpdate = false + override fun onCreate(savedInstanceState: Bundle?) { + super.onCreate(savedInstanceState) + postponeEnterTransition() + sharedElementEnterTransition = TransitionInflater.from(context).inflateTransition(android.R.transition.move) + } + override fun onCreateView( inflater: LayoutInflater, container: ViewGroup?, @@ -172,6 +179,8 @@ class SearchFragment : Fragment(), BackHandler { requireComponents.analytics.metrics.track(Event.SearchShortcutMenuOpened) } } + + startPostponedEnterTransition() } override fun onResume() { diff --git a/app/src/main/res/layout/fragment_home.xml b/app/src/main/res/layout/fragment_home.xml index efe972332..c0f3eb957 100644 --- a/app/src/main/res/layout/fragment_home.xml +++ b/app/src/main/res/layout/fragment_home.xml @@ -50,6 +50,7 @@ + + + android:textSize="15sp" /> + app:destination="@id/searchFragment" + app:enterAnim="@anim/fade_in" + app:exitAnim="@anim/fade_out" + app:popEnterAnim="@anim/fade_in" + app:popExitAnim="@anim/fade_out" />