Parcourir la source

Navigation color

Guy Carmeli il y a 8 ans
Parent
révision
de0ad91452

+ 9
- 10
android/app/src/main/java/com/reactnativenavigation/layouts/ScreenLayout.java Voir le fichier

@@ -5,7 +5,6 @@ import android.app.Activity;
5 5
 import android.content.Context;
6 6
 import android.graphics.Color;
7 7
 import android.os.Build;
8
-import android.support.annotation.ColorInt;
9 8
 import android.view.Window;
10 9
 import android.widget.LinearLayout;
11 10
 
@@ -64,36 +63,36 @@ public class ScreenLayout extends LinearLayout implements ScrollDirectionListene
64 63
     }
65 64
 
66 65
     @TargetApi(Build.VERSION_CODES.LOLLIPOP)
67
-    private void setStatusBarColor(@ColorInt int statusBarColor) {
66
+    private void setStatusBarColor(ScreenStyleParams.Color statusBarColor) {
68 67
         if (!SdkSupports.lollipop()) {
69 68
             return;
70 69
         }
71 70
 
72 71
         final Activity context = (Activity) getContext();
73 72
         final Window window = context.getWindow();
74
-        if (statusBarColor > 0) {
75
-            window.setStatusBarColor(statusBarColor);
73
+        if (statusBarColor.hasColor()) {
74
+            window.setStatusBarColor(statusBarColor.getColor());
76 75
         } else {
77 76
             window.setStatusBarColor(Color.BLACK);
78 77
         }
79 78
     }
80 79
 
81
-    private void setTopBarColor(@ColorInt int topBarColor) {
82
-        if (topBarColor > 0) {
83
-            topBar.setBackgroundColor(topBarColor);
80
+    private void setTopBarColor(ScreenStyleParams.Color topBarColor) {
81
+        if (topBarColor.hasColor()) {
82
+            topBar.setBackgroundColor(topBarColor.getColor());
84 83
         }
85 84
     }
86 85
 
87 86
     @TargetApi(Build.VERSION_CODES.LOLLIPOP)
88
-    public void setNavigationBarColor(int navigationBarColor) {
87
+    public void setNavigationBarColor(ScreenStyleParams.Color navigationBarColor) {
89 88
         if (!SdkSupports.lollipop()) {
90 89
             return;
91 90
         }
92 91
 
93 92
         final Activity context = (Activity) getContext();
94 93
         final Window window = context.getWindow();
95
-        if (navigationBarColor > 0) {
96
-            window.setNavigationBarColor(navigationBarColor);
94
+        if (navigationBarColor.hasColor()) {
95
+            window.setNavigationBarColor(navigationBarColor.getColor());
97 96
         } else {
98 97
             window.setNavigationBarColor(Color.BLACK);
99 98
         }

+ 23
- 6
android/app/src/main/java/com/reactnativenavigation/params/ScreenStyleParams.java Voir le fichier

@@ -3,12 +3,29 @@ package com.reactnativenavigation.params;
3 3
 import android.support.annotation.ColorInt;
4 4
 
5 5
 public class ScreenStyleParams {
6
-    @ColorInt
7
-    public int statusBarColor;
8
-    @ColorInt
9
-    public int topBarColor;
10
-    @ColorInt
11
-    public int navigationBarColor;
6
+    public static class Color {
7
+        @ColorInt
8
+        private int color = -1;
9
+
10
+        public Color(int color) {
11
+            this.color = color;
12
+        }
13
+
14
+        public boolean hasColor() {
15
+            return color != -1;
16
+        }
17
+
18
+        public int getColor() {
19
+            if (!hasColor()) {
20
+                throw new RuntimeException("Color undefined");
21
+            }
22
+            return color;
23
+        }
24
+    }
25
+
26
+    public Color statusBarColor;
27
+    public Color topBarColor;
28
+    public Color navigationBarColor;
12 29
     public boolean titleBarHidden;
13 30
     public boolean topBarHidden;
14 31
     public boolean backButtonHidden;

+ 1
- 3
android/app/src/main/java/com/reactnativenavigation/params/TitleBarButtonParams.java Voir le fichier

@@ -1,7 +1,6 @@
1 1
 package com.reactnativenavigation.params;
2 2
 
3 3
 import android.graphics.drawable.Drawable;
4
-import android.support.annotation.ColorInt;
5 4
 import android.view.MenuItem;
6 5
 
7 6
 public class TitleBarButtonParams {
@@ -21,8 +20,7 @@ public class TitleBarButtonParams {
21 20
     // Todo: add id for click listener
22 21
     public String label;
23 22
     public Drawable icon;
24
-    @ColorInt
25
-    public int color;
23
+    public ScreenStyleParams.Color color;
26 24
     public ShowAsAction showAsAction;
27 25
     public boolean enabled = true;
28 26
 }

+ 3
- 3
android/app/src/main/java/com/reactnativenavigation/params/parsers/ScreenStyleParamsParser.java Voir le fichier

@@ -11,9 +11,9 @@ public class ScreenStyleParamsParser {
11 11
             return result;
12 12
         }
13 13
 
14
-        result.statusBarColor = ColorParser.parse(params.getString("statusBarColor"));
15
-        result.topBarColor = ColorParser.parse(params.getString("topBarColor"));
16
-        result.navigationBarColor = ColorParser.parse(params.getString("navigationBarColor"));
14
+        result.statusBarColor = new ScreenStyleParams.Color(ColorParser.parse(params.getString("statusBarColor")));
15
+        result.topBarColor = new ScreenStyleParams.Color(ColorParser.parse(params.getString("topBarColor")));
16
+        result.navigationBarColor = new ScreenStyleParams.Color(ColorParser.parse(params.getString("navigationBarColor")));
17 17
         result.titleBarHidden = params.getBoolean("titleBarHidden");
18 18
         result.backButtonHidden = params.getBoolean("backButtonHidden");
19 19
         result.topTabsHidden = params.getBoolean("topTabsHidden");

+ 2
- 1
android/app/src/main/java/com/reactnativenavigation/params/parsers/TitleBarButtonParamsParser.java Voir le fichier

@@ -2,6 +2,7 @@ package com.reactnativenavigation.params.parsers;
2 2
 
3 3
 import android.os.Bundle;
4 4
 
5
+import com.reactnativenavigation.params.ScreenStyleParams;
5 6
 import com.reactnativenavigation.params.TitleBarButtonParams;
6 7
 import com.reactnativenavigation.react.ImageLoader;
7 8
 
@@ -27,7 +28,7 @@ public class TitleBarButtonParamsParser extends Parser {
27 28
         if (hasKey(bundle,"icon")) {
28 29
             result.icon = ImageLoader.loadImage(bundle.getString("icon"));
29 30
         }
30
-        result.color = ColorParser.parse(bundle.getString("color"));
31
+        result.color = new ScreenStyleParams.Color(ColorParser.parse(bundle.getString("color")));
31 32
         result.showAsAction = parseShowAsAction(bundle.getString("showAsAction"));
32 33
         result.enabled = bundle.getBoolean("enabled", true);
33 34
         return result;

+ 3
- 4
android/app/src/main/java/com/reactnativenavigation/views/TitleBarButton.java Voir le fichier

@@ -53,7 +53,7 @@ public class TitleBarButton {
53 53
     }
54 54
 
55 55
     private void setIconColor() {
56
-        ImageUtils.tint(buttonParams.icon, buttonParams.color);
56
+        ImageUtils.tint(buttonParams.icon, buttonParams.color.getColor());
57 57
     }
58 58
 
59 59
     private void setTextColor() {
@@ -75,7 +75,7 @@ public class TitleBarButton {
75 75
 
76 76
     private void setTextColorForFoundButtonViews(ArrayList<View> outViews) {
77 77
         for (View button : outViews) {
78
-            ((TextView) button).setTextColor(buttonParams.color);
78
+            ((TextView) button).setTextColor(buttonParams.color.getColor());
79 79
         }
80 80
     }
81 81
 
@@ -84,7 +84,6 @@ public class TitleBarButton {
84 84
     }
85 85
 
86 86
     private boolean hasColor() {
87
-        return buttonParams.color > 0;
87
+        return buttonParams.color.hasColor();
88 88
     }
89
-
90 89
 }