1
0
Fork 0

#7700 fixed scrolling, parallax action to match both images and some code clean up

master
Marc Leclair 2020-02-04 01:13:20 -05:00 committed by Jeff Boek
parent 72007590f7
commit 92b38206c7
2 changed files with 26 additions and 37 deletions

View File

@ -137,6 +137,7 @@ class HomeFragment : Fragment() {
data class PendingSessionDeletion(val deletionJob: (suspend () -> Unit), val sessionId: String) data class PendingSessionDeletion(val deletionJob: (suspend () -> Unit), val sessionId: String)
private lateinit var homeAppBarOffSetListener : AppBarLayout.OnOffsetChangedListener
private val onboarding by lazy { FenixOnboarding(requireContext()) } private val onboarding by lazy { FenixOnboarding(requireContext()) }
private lateinit var homeFragmentStore: HomeFragmentStore private lateinit var homeFragmentStore: HomeFragmentStore
private lateinit var sessionControlInteractor: SessionControlInteractor private lateinit var sessionControlInteractor: SessionControlInteractor
@ -205,20 +206,10 @@ class HomeFragment : Fragment() {
showDeleteCollectionPrompt = ::showDeleteCollectionPrompt showDeleteCollectionPrompt = ::showDeleteCollectionPrompt
) )
) )
updateLayout(view)
view.homeAppBar.addOnOffsetChangedListener(
AppBarLayout.OnOffsetChangedListener { appBarLayout, verticalOffset ->
appBarLayout.alpha =
1.0f - abs(verticalOffset / appBarLayout.totalScrollRange.toFloat())
}
)
setOffset(view) setOffset(view)
sessionControlView = SessionControlView(homeFragmentStore, sessionControlView = SessionControlView(homeFragmentStore,
view.sessionControlRecyclerView, sessionControlInteractor) view.sessionControlRecyclerView, sessionControlInteractor)
updateLayout(view)
activity.themeManager.applyStatusBarTheme(activity) activity.themeManager.applyStatusBarTheme(activity)
return view return view
} }
@ -226,33 +217,25 @@ class HomeFragment : Fragment() {
private fun updateLayout(view: View) { private fun updateLayout(view: View) {
val shouldUseBottomToolbar = view.context.settings().shouldUseBottomToolbar val shouldUseBottomToolbar = view.context.settings().shouldUseBottomToolbar
if(!shouldUseBottomToolbar){ if(!shouldUseBottomToolbar){
view.toolbarLayout.layoutParams = CoordinatorLayout.LayoutParams(ConstraintLayout.LayoutParams.MATCH_PARENT, ConstraintLayout.LayoutParams.WRAP_CONTENT) view.toolbarLayout.layoutParams = CoordinatorLayout.LayoutParams(ConstraintLayout.LayoutParams.MATCH_PARENT, ConstraintLayout.LayoutParams.WRAP_CONTENT)
.apply { .apply {
gravity = Gravity.TOP gravity = Gravity.TOP
} }
}
val headingsTopMargins = if (shouldUseBottomToolbar) { HEADER_MARGIN } else { TOP_TOOLBAR_HEADER_MARGIN } view.homeAppBar.updateLayoutParams<ViewGroup.MarginLayoutParams>{
val sessionControlViewTopMargin = if (shouldUseBottomToolbar) { topMargin = HEADER_MARGIN.dpToPx(resources.displayMetrics)
SESSION_CONTROL_VIEW_TOP_MARGIN
} else {
SESSION_CONTROL_VIEW_TOP_TOOLBAR_MARGIN
}
view.wordmark.updateLayoutParams<ViewGroup.MarginLayoutParams> {
topMargin = headingsTopMargins.dpToPx(resources.displayMetrics)
}
sessionControlView!!.view.updateLayoutParams<ViewGroup.MarginLayoutParams> {
topMargin = sessionControlViewTopMargin.dpToPx(resources.displayMetrics)
}
if (!shouldUseBottomToolbar) {
view.privateBrowsingButton.updateLayoutParams<ViewGroup.MarginLayoutParams> {
topMargin = PRIVATE_BROWSING_BUTTON_TOP_MARGIN.dpToPx(resources.displayMetrics)
} }
createNewAppBarListener(HEADER_MARGIN.dpToPx(resources.displayMetrics).toFloat())
view.homeAppBar.addOnOffsetChangedListener(
homeAppBarOffSetListener
)
}else {
createNewAppBarListener(0F)
view.homeAppBar.addOnOffsetChangedListener(
homeAppBarOffSetListener
)
} }
} }
@ExperimentalCoroutinesApi @ExperimentalCoroutinesApi
@ -342,6 +325,7 @@ class HomeFragment : Fragment() {
override fun onDestroyView() { override fun onDestroyView() {
sessionControlView = null sessionControlView = null
view!!.homeAppBar.removeOnOffsetChangedListener(homeAppBarOffSetListener)
super.onDestroyView() 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 { companion object {
private const val NON_TAB_ITEM_NUM = 3 private const val NON_TAB_ITEM_NUM = 3
private const val ANIM_SCROLL_DELAY = 100L private const val ANIM_SCROLL_DELAY = 100L
@ -858,10 +849,6 @@ class HomeFragment : Fragment() {
// Layout // Layout
private const val HEADER_MARGIN = 60 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
} }
} }

View File

@ -37,7 +37,8 @@
android:background="?android:attr/selectableItemBackgroundBorderless" android:background="?android:attr/selectableItemBackgroundBorderless"
android:contentDescription="@string/content_description_private_browsing_button" android:contentDescription="@string/content_description_private_browsing_button"
app:srcCompat="@drawable/private_browsing_button" app:srcCompat="@drawable/private_browsing_button"
app:layout_collapseMode="parallax"/> app:layout_collapseMode="parallax"
app:layout_collapseParallaxMultiplier=".8"/>
<ImageView <ImageView
android:id="@+id/wordmark" android:id="@+id/wordmark"
@ -52,7 +53,8 @@
android:focusable="false" android:focusable="false"
android:importantForAccessibility="no" android:importantForAccessibility="no"
app:srcCompat="?fenixLogo" app:srcCompat="?fenixLogo"
app:layout_collapseMode="pin"/> app:layout_collapseMode="parallax"
app:layout_collapseParallaxMultiplier=".1"/>
</com.google.android.material.appbar.CollapsingToolbarLayout> </com.google.android.material.appbar.CollapsingToolbarLayout>