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
 
8
 
9
 import com.reactnativenavigation.views.ScrollDirectionListener;
9
 import com.reactnativenavigation.views.ScrollDirectionListener;
10
 
10
 
11
-public class HideOnScrollAnimator {
11
+public class OnScrollAnimator {
12
 
12
 
13
     public enum HideDirection {
13
     public enum HideDirection {
14
         Up, Down
14
         Up, Down
25
     private final int shownEndValue = 0;
25
     private final int shownEndValue = 0;
26
     private State state = State.Shown;
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
         this.view = view;
29
         this.view = view;
30
         this.hideDirection = hideDirection;
30
         this.hideDirection = hideDirection;
31
         this.hiddenEndValue = hideDirection == HideDirection.Up ? -height : height;
31
         this.hiddenEndValue = hideDirection == HideDirection.Up ? -height : height;
50
     }
50
     }
51
 
51
 
52
     private void handleUpHidingViews(ScrollDirectionListener.Direction scrollDirection) {
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
             show();
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
 import android.view.Window;
10
 import android.view.Window;
11
 import android.widget.LinearLayout;
11
 import android.widget.LinearLayout;
12
 
12
 
13
-import com.reactnativenavigation.animation.HideOnScrollAnimator;
13
+import com.reactnativenavigation.animation.OnScrollAnimator;
14
 import com.reactnativenavigation.params.ScreenParams;
14
 import com.reactnativenavigation.params.ScreenParams;
15
 import com.reactnativenavigation.params.ScreenStyleParams;
15
 import com.reactnativenavigation.params.ScreenStyleParams;
16
 import com.reactnativenavigation.utils.SdkSupports;
16
 import com.reactnativenavigation.utils.SdkSupports;
26
     private final ScreenParams screenParams;
26
     private final ScreenParams screenParams;
27
     private ContentView contentView;
27
     private ContentView contentView;
28
     private TopBar topBar;
28
     private TopBar topBar;
29
-    private HideOnScrollAnimator scrollAnimator;
29
+    private OnScrollAnimator scrollAnimator;
30
 
30
 
31
     public ScreenImpl(Context context, ScreenParams screenParams) {
31
     public ScreenImpl(Context context, ScreenParams screenParams) {
32
         super(context);
32
         super(context);
107
     public void onScrollChanged(ScrollDirectionListener.Direction direction) {
107
     public void onScrollChanged(ScrollDirectionListener.Direction direction) {
108
         Log.d("TAG", "onScrollChanged: ");
108
         Log.d("TAG", "onScrollChanged: ");
109
         if (scrollAnimator == null) {
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
         scrollAnimator.onScrollChanged(direction);
112
         scrollAnimator.onScrollChanged(direction);
113
     }
113
     }

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

29
 
29
 
30
         final int scrollY = view.getScrollY();
30
         final int scrollY = view.getScrollY();
31
         if (isScrollPositionChanged(scrollY) && !isTopOverscroll(scrollY) && !isBottomOverscroll(scrollY)) {
31
         if (isScrollPositionChanged(scrollY) && !isTopOverscroll(scrollY) && !isBottomOverscroll(scrollY)) {
32
+            onChanged.onScrollChanged(getScrollDirection(scrollY));
32
             lastScrollY = scrollY;
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
         return scrollY > lastScrollY ? Direction.Down : Direction.Up;
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
 import android.support.v7.widget.Toolbar;
4
 import android.support.v7.widget.Toolbar;
5
 import android.view.Menu;
5
 import android.view.Menu;
6
 
6
 
7
-import com.reactnativenavigation.animation.HideOnScrollAnimator;
7
+import com.reactnativenavigation.animation.OnScrollAnimator;
8
 import com.reactnativenavigation.params.TitleBarButtonParams;
8
 import com.reactnativenavigation.params.TitleBarButtonParams;
9
 
9
 
10
 import java.util.List;
10
 import java.util.List;
12
 public class TitleBar extends Toolbar {
12
 public class TitleBar extends Toolbar {
13
 
13
 
14
     private boolean hideOnScroll = false;
14
     private boolean hideOnScroll = false;
15
-    private HideOnScrollAnimator hideOnScrollAnimator;
15
+    private OnScrollAnimator onScrollAnimator;
16
 
16
 
17
     public TitleBar(Context context) {
17
     public TitleBar(Context context) {
18
         super(context);
18
         super(context);
36
 
36
 
37
     public void onScrollChanged(ScrollDirectionListener.Direction direction) {
37
     public void onScrollChanged(ScrollDirectionListener.Direction direction) {
38
         if (hideOnScroll) {
38
         if (hideOnScroll) {
39
-            if (hideOnScrollAnimator == null) {
39
+            if (onScrollAnimator == null) {
40
                 createScrollAnimator();
40
                 createScrollAnimator();
41
             }
41
             }
42
-            hideOnScrollAnimator.onScrollChanged(direction);
42
+            onScrollAnimator.onScrollChanged(direction);
43
         }
43
         }
44
     }
44
     }
45
 
45
 
46
     private void createScrollAnimator() {
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
 }