package com.reactnativenavigation.views.collapsingToolbar; import android.view.MotionEvent; import android.widget.ScrollView; import com.reactnativenavigation.views.collapsingToolbar.behaviours.CollapseBehaviour; import com.reactnativenavigation.views.collapsingToolbar.behaviours.CollapseTopBarBehaviour; public class ScrollListener { private CollapseCalculator collapseCalculator; private OnScrollListener scrollListener; private CollapseBehaviour collapseBehaviour; public ScrollListener(CollapseCalculator collapseCalculator, OnScrollListener scrollListener, CollapseBehaviour collapseBehaviour) { this.collapseCalculator = collapseCalculator; this.scrollListener = scrollListener; this.collapseBehaviour = collapseBehaviour; collapseCalculator.setFlingListener(scrollListener); } void onScrollViewAdded(ScrollView scrollView) { collapseCalculator.setScrollView(scrollView); } boolean onTouch(MotionEvent event) { CollapseAmount amount = collapseCalculator.calculate(event); if (amount.canCollapse()) { scrollListener.onScroll(event, amount); return collapseBehaviour instanceof CollapseTopBarBehaviour; } return false; } }