瀏覽代碼

Reduce collapsing TopBar sensitivity (#551)

Take scaledTouchSlop into account when calculating CollapseAmount to
prevent the TopBar from translating after every touch event, even
when the users intent was not to scroll in Y direction.
Guy Carmeli 8 年之前
父節點
當前提交
c40dcfe523

+ 4
- 1
android/app/src/main/java/com/reactnativenavigation/views/collapsingToolbar/CollapseCalculator.java 查看文件

4
 import android.support.annotation.Nullable;
4
 import android.support.annotation.Nullable;
5
 import android.view.GestureDetector;
5
 import android.view.GestureDetector;
6
 import android.view.MotionEvent;
6
 import android.view.MotionEvent;
7
+import android.view.ViewConfiguration;
7
 import android.widget.ScrollView;
8
 import android.widget.ScrollView;
8
 
9
 
9
 import com.reactnativenavigation.NavigationApplication;
10
 import com.reactnativenavigation.NavigationApplication;
31
     private OnFlingListener flingListener;
32
     private OnFlingListener flingListener;
32
     private int scrollY = 0;
33
     private int scrollY = 0;
33
     private int totalCollapse = 0;
34
     private int totalCollapse = 0;
35
+    private final int scaledTouchSlop;
34
 
36
 
35
     public CollapseCalculator(final CollapsingView collapsingView, CollapseBehaviour collapseBehaviour) {
37
     public CollapseCalculator(final CollapsingView collapsingView, CollapseBehaviour collapseBehaviour) {
36
         this.view = collapsingView;
38
         this.view = collapsingView;
37
         this.collapseBehaviour = collapseBehaviour;
39
         this.collapseBehaviour = collapseBehaviour;
40
+        scaledTouchSlop = ViewConfiguration.get(NavigationApplication.instance).getScaledTouchSlop();
38
         setFlingDetector();
41
         setFlingDetector();
39
     }
42
     }
40
 
43
 
188
         totalCollapse += collapse;
191
         totalCollapse += collapse;
189
         previousCollapseY = y;
192
         previousCollapseY = y;
190
         previousTouchEvent = MotionEvent.obtain(event);
193
         previousTouchEvent = MotionEvent.obtain(event);
191
-        return new CollapseAmount(collapse);
194
+        return Math.abs(totalCollapse) < scaledTouchSlop ? CollapseAmount.None : new CollapseAmount(collapse);
192
     }
195
     }
193
 
196
 
194
     private float calculateCollapse(float y) {
197
     private float calculateCollapse(float y) {