|
@@ -31,7 +31,8 @@ public class CollapseCalculator {
|
31
|
31
|
private GestureDetector flingDetector;
|
32
|
32
|
private OnFlingListener flingListener;
|
33
|
33
|
private int scrollY = 0;
|
34
|
|
- private int totalCollapse = 0;
|
|
34
|
+ private float totalCollapse = 0;
|
|
35
|
+ private float totalCollapseDeltaSinceTouchDown = 0;
|
35
|
36
|
private final int scaledTouchSlop;
|
36
|
37
|
|
37
|
38
|
public CollapseCalculator(final CollapsingView collapsingView, CollapseBehaviour collapseBehaviour) {
|
|
@@ -156,7 +157,8 @@ public class CollapseCalculator {
|
156
|
157
|
|
157
|
158
|
private boolean calculateCanCollapse(float currentTopBarTranslation, float finalExpendedTranslation, float finalCollapsedTranslation) {
|
158
|
159
|
return currentTopBarTranslation > finalCollapsedTranslation &&
|
159
|
|
- currentTopBarTranslation <= finalExpendedTranslation;
|
|
160
|
+ currentTopBarTranslation <= finalExpendedTranslation &&
|
|
161
|
+ (scrollView.getScrollY() == 0 || (collapseBehaviour instanceof TitleBarHideOnScrollBehaviour || collapseBehaviour instanceof CollapseTitleBarBehaviour));
|
160
|
162
|
}
|
161
|
163
|
|
162
|
164
|
private boolean calculateCanExpend(float currentTopBarTranslation, float finalExpendedTranslation, float finalCollapsedTranslation) {
|
|
@@ -192,10 +194,10 @@ public class CollapseCalculator {
|
192
|
194
|
}
|
193
|
195
|
collapse = calculateCollapse(y);
|
194
|
196
|
totalCollapse += collapse;
|
|
197
|
+ totalCollapseDeltaSinceTouchDown += Math.abs(y - previousCollapseY);
|
195
|
198
|
previousCollapseY = y;
|
196
|
199
|
previousTouchEvent = MotionEvent.obtain(event);
|
197
|
|
- final float delta = Math.abs(y - touchDownY);
|
198
|
|
- return Math.abs(delta) < scaledTouchSlop ? CollapseAmount.None : new CollapseAmount(collapse);
|
|
200
|
+ return totalCollapseDeltaSinceTouchDown < scaledTouchSlop ? CollapseAmount.None : new CollapseAmount(collapse);
|
199
|
201
|
}
|
200
|
202
|
|
201
|
203
|
private float calculateCollapse(float y) {
|
|
@@ -233,6 +235,7 @@ public class CollapseCalculator {
|
233
|
235
|
|
234
|
236
|
private void saveInitialTouchY(MotionEvent event) {
|
235
|
237
|
totalCollapse = 0;
|
|
238
|
+ totalCollapseDeltaSinceTouchDown = 0;
|
236
|
239
|
touchDownY = event.getRawY();
|
237
|
240
|
scrollY = scrollView.getScrollY();
|
238
|
241
|
previousCollapseY = touchDownY;
|