From 92b38206c74c5ddae4f9aa9db27f3b703d7dc634 Mon Sep 17 00:00:00 2001 From: Marc Leclair Date: Tue, 4 Feb 2020 01:13:20 -0500 Subject: [PATCH] #7700 fixed scrolling, parallax action to match both images and some code clean up --- .../org/mozilla/fenix/home/HomeFragment.kt | 57 +++++++------------ app/src/main/res/layout/fragment_home.xml | 6 +- 2 files changed, 26 insertions(+), 37 deletions(-) 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 686fea468..2547323c7 100644 --- a/app/src/main/java/org/mozilla/fenix/home/HomeFragment.kt +++ b/app/src/main/java/org/mozilla/fenix/home/HomeFragment.kt @@ -137,6 +137,7 @@ class HomeFragment : Fragment() { data class PendingSessionDeletion(val deletionJob: (suspend () -> Unit), val sessionId: String) + private lateinit var homeAppBarOffSetListener : AppBarLayout.OnOffsetChangedListener private val onboarding by lazy { FenixOnboarding(requireContext()) } private lateinit var homeFragmentStore: HomeFragmentStore private lateinit var sessionControlInteractor: SessionControlInteractor @@ -205,20 +206,10 @@ class HomeFragment : Fragment() { showDeleteCollectionPrompt = ::showDeleteCollectionPrompt ) ) - - view.homeAppBar.addOnOffsetChangedListener( - AppBarLayout.OnOffsetChangedListener { appBarLayout, verticalOffset -> - appBarLayout.alpha = - 1.0f - abs(verticalOffset / appBarLayout.totalScrollRange.toFloat()) - } - ) - + updateLayout(view) setOffset(view) - - sessionControlView = SessionControlView(homeFragmentStore, view.sessionControlRecyclerView, sessionControlInteractor) - updateLayout(view) activity.themeManager.applyStatusBarTheme(activity) return view } @@ -226,33 +217,25 @@ class HomeFragment : Fragment() { private fun updateLayout(view: View) { val shouldUseBottomToolbar = view.context.settings().shouldUseBottomToolbar - if(!shouldUseBottomToolbar){ view.toolbarLayout.layoutParams = CoordinatorLayout.LayoutParams(ConstraintLayout.LayoutParams.MATCH_PARENT, ConstraintLayout.LayoutParams.WRAP_CONTENT) .apply { gravity = Gravity.TOP } - } - val headingsTopMargins = if (shouldUseBottomToolbar) { HEADER_MARGIN } else { TOP_TOOLBAR_HEADER_MARGIN } - val sessionControlViewTopMargin = if (shouldUseBottomToolbar) { - SESSION_CONTROL_VIEW_TOP_MARGIN - } else { - SESSION_CONTROL_VIEW_TOP_TOOLBAR_MARGIN - } - - view.wordmark.updateLayoutParams { - topMargin = headingsTopMargins.dpToPx(resources.displayMetrics) - } - - sessionControlView!!.view.updateLayoutParams { - topMargin = sessionControlViewTopMargin.dpToPx(resources.displayMetrics) - } - - if (!shouldUseBottomToolbar) { - view.privateBrowsingButton.updateLayoutParams { - topMargin = PRIVATE_BROWSING_BUTTON_TOP_MARGIN.dpToPx(resources.displayMetrics) + view.homeAppBar.updateLayoutParams{ + topMargin = HEADER_MARGIN.dpToPx(resources.displayMetrics) } + + createNewAppBarListener(HEADER_MARGIN.dpToPx(resources.displayMetrics).toFloat()) + view.homeAppBar.addOnOffsetChangedListener( + homeAppBarOffSetListener + ) + }else { + createNewAppBarListener(0F) + view.homeAppBar.addOnOffsetChangedListener( + homeAppBarOffSetListener + ) } } @ExperimentalCoroutinesApi @@ -342,6 +325,7 @@ class HomeFragment : Fragment() { override fun onDestroyView() { sessionControlView = null + view!!.homeAppBar.removeOnOffsetChangedListener(homeAppBarOffSetListener) super.onDestroyView() } @@ -846,6 +830,13 @@ class HomeFragment : Fragment() { } } + private fun createNewAppBarListener(margin : Float){ + homeAppBarOffSetListener = AppBarLayout.OnOffsetChangedListener { appBarLayout, verticalOffset -> + val reduceScrollRanged = appBarLayout.totalScrollRange.toFloat() - margin + appBarLayout.alpha = 1.0f - abs(verticalOffset / reduceScrollRanged) + } + } + companion object { private const val NON_TAB_ITEM_NUM = 3 private const val ANIM_SCROLL_DELAY = 100L @@ -858,10 +849,6 @@ class HomeFragment : Fragment() { // Layout private const val HEADER_MARGIN = 60 - private const val TOP_TOOLBAR_HEADER_MARGIN = 120 - private const val SESSION_CONTROL_VIEW_TOP_MARGIN = 32 - private const val SESSION_CONTROL_VIEW_TOP_TOOLBAR_MARGIN = 64 - private const val PRIVATE_BROWSING_BUTTON_TOP_MARGIN = 40 } } diff --git a/app/src/main/res/layout/fragment_home.xml b/app/src/main/res/layout/fragment_home.xml index d4a89c0d2..f5dfeac9e 100644 --- a/app/src/main/res/layout/fragment_home.xml +++ b/app/src/main/res/layout/fragment_home.xml @@ -37,7 +37,8 @@ android:background="?android:attr/selectableItemBackgroundBorderless" android:contentDescription="@string/content_description_private_browsing_button" app:srcCompat="@drawable/private_browsing_button" - app:layout_collapseMode="parallax"/> + app:layout_collapseMode="parallax" + app:layout_collapseParallaxMultiplier=".8"/> + app:layout_collapseMode="parallax" + app:layout_collapseParallaxMultiplier=".1"/>