Browse Source

Hide AppBar on scroll

Guy Carmeli 8 years ago
parent
commit
92b60fbb07

android/app/src/main/java/com/reactnativenavigation/animation/HideOnScrollAnimator.java → android/app/src/main/java/com/reactnativenavigation/animation/OnScrollAnimator.java View File

@@ -8,7 +8,7 @@ import android.view.View;
8 8
 
9 9
 import com.reactnativenavigation.views.ScrollDirectionListener;
10 10
 
11
-public class HideOnScrollAnimator {
11
+public class OnScrollAnimator {
12 12
 
13 13
     public enum HideDirection {
14 14
         Up, Down
@@ -25,7 +25,7 @@ public class HideOnScrollAnimator {
25 25
     private final int shownEndValue = 0;
26 26
     private State state = State.Shown;
27 27
 
28
-    public HideOnScrollAnimator(View view, HideDirection hideDirection, int height) {
28
+    public OnScrollAnimator(View view, HideDirection hideDirection, int height) {
29 29
         this.view = view;
30 30
         this.hideDirection = hideDirection;
31 31
         this.hiddenEndValue = hideDirection == HideDirection.Up ? -height : height;
@@ -50,10 +50,10 @@ public class HideOnScrollAnimator {
50 50
     }
51 51
 
52 52
     private void handleUpHidingViews(ScrollDirectionListener.Direction scrollDirection) {
53
-        if (scrollUp(scrollDirection) && !hiding()) {
54
-            hide();
55
-        } else if (scrollDown(scrollDirection) && !showing()) {
53
+        if (scrollUp(scrollDirection) && !showing()) {
56 54
             show();
55
+        } else if (scrollDown(scrollDirection) && !hiding()) {
56
+            hide();
57 57
         }
58 58
     }
59 59
 

+ 3
- 3
android/app/src/main/java/com/reactnativenavigation/layouts/ScreenImpl.java View File

@@ -10,7 +10,7 @@ import android.view.View;
10 10
 import android.view.Window;
11 11
 import android.widget.LinearLayout;
12 12
 
13
-import com.reactnativenavigation.animation.HideOnScrollAnimator;
13
+import com.reactnativenavigation.animation.OnScrollAnimator;
14 14
 import com.reactnativenavigation.params.ScreenParams;
15 15
 import com.reactnativenavigation.params.ScreenStyleParams;
16 16
 import com.reactnativenavigation.utils.SdkSupports;
@@ -26,7 +26,7 @@ public class ScreenImpl extends LinearLayout implements Screen, ScrollDirectionL
26 26
     private final ScreenParams screenParams;
27 27
     private ContentView contentView;
28 28
     private TopBar topBar;
29
-    private HideOnScrollAnimator scrollAnimator;
29
+    private OnScrollAnimator scrollAnimator;
30 30
 
31 31
     public ScreenImpl(Context context, ScreenParams screenParams) {
32 32
         super(context);
@@ -107,7 +107,7 @@ public class ScreenImpl extends LinearLayout implements Screen, ScrollDirectionL
107 107
     public void onScrollChanged(ScrollDirectionListener.Direction direction) {
108 108
         Log.d("TAG", "onScrollChanged: ");
109 109
         if (scrollAnimator == null) {
110
-            scrollAnimator = new HideOnScrollAnimator(topBar, HideOnScrollAnimator.HideDirection.Up, topBar.getHeight());
110
+            scrollAnimator = new OnScrollAnimator(topBar, OnScrollAnimator.HideDirection.Up, topBar.getHeight());
111 111
         }
112 112
         scrollAnimator.onScrollChanged(direction);
113 113
     }

+ 2
- 2
android/app/src/main/java/com/reactnativenavigation/views/ScrollDirectionListener.java View File

@@ -29,12 +29,12 @@ public class ScrollDirectionListener implements ViewTreeObserver.OnScrollChanged
29 29
 
30 30
         final int scrollY = view.getScrollY();
31 31
         if (isScrollPositionChanged(scrollY) && !isTopOverscroll(scrollY) && !isBottomOverscroll(scrollY)) {
32
+            onChanged.onScrollChanged(getScrollDirection(scrollY));
32 33
             lastScrollY = scrollY;
33
-            onChanged.onScrollChanged(getDirection(scrollY));
34 34
         }
35 35
     }
36 36
 
37
-    private Direction getDirection(int scrollY) {
37
+    private Direction getScrollDirection(int scrollY) {
38 38
         return scrollY > lastScrollY ? Direction.Down : Direction.Up;
39 39
     }
40 40
 

+ 5
- 5
android/app/src/main/java/com/reactnativenavigation/views/TitleBar.java View File

@@ -4,7 +4,7 @@ import android.content.Context;
4 4
 import android.support.v7.widget.Toolbar;
5 5
 import android.view.Menu;
6 6
 
7
-import com.reactnativenavigation.animation.HideOnScrollAnimator;
7
+import com.reactnativenavigation.animation.OnScrollAnimator;
8 8
 import com.reactnativenavigation.params.TitleBarButtonParams;
9 9
 
10 10
 import java.util.List;
@@ -12,7 +12,7 @@ import java.util.List;
12 12
 public class TitleBar extends Toolbar {
13 13
 
14 14
     private boolean hideOnScroll = false;
15
-    private HideOnScrollAnimator hideOnScrollAnimator;
15
+    private OnScrollAnimator onScrollAnimator;
16 16
 
17 17
     public TitleBar(Context context) {
18 18
         super(context);
@@ -36,14 +36,14 @@ public class TitleBar extends Toolbar {
36 36
 
37 37
     public void onScrollChanged(ScrollDirectionListener.Direction direction) {
38 38
         if (hideOnScroll) {
39
-            if (hideOnScrollAnimator == null) {
39
+            if (onScrollAnimator == null) {
40 40
                 createScrollAnimator();
41 41
             }
42
-            hideOnScrollAnimator.onScrollChanged(direction);
42
+            onScrollAnimator.onScrollChanged(direction);
43 43
         }
44 44
     }
45 45
 
46 46
     private void createScrollAnimator() {
47
-        hideOnScrollAnimator = new HideOnScrollAnimator(this, HideOnScrollAnimator.HideDirection.Up, getHeight());
47
+        onScrollAnimator = new OnScrollAnimator(this, OnScrollAnimator.HideDirection.Up, getHeight());
48 48
     }
49 49
 }