소스 검색

Navigation color

Guy Carmeli 8 년 전
부모
커밋
de0ad91452

+ 9
- 10
android/app/src/main/java/com/reactnativenavigation/layouts/ScreenLayout.java 파일 보기

5
 import android.content.Context;
5
 import android.content.Context;
6
 import android.graphics.Color;
6
 import android.graphics.Color;
7
 import android.os.Build;
7
 import android.os.Build;
8
-import android.support.annotation.ColorInt;
9
 import android.view.Window;
8
 import android.view.Window;
10
 import android.widget.LinearLayout;
9
 import android.widget.LinearLayout;
11
 
10
 
64
     }
63
     }
65
 
64
 
66
     @TargetApi(Build.VERSION_CODES.LOLLIPOP)
65
     @TargetApi(Build.VERSION_CODES.LOLLIPOP)
67
-    private void setStatusBarColor(@ColorInt int statusBarColor) {
66
+    private void setStatusBarColor(ScreenStyleParams.Color statusBarColor) {
68
         if (!SdkSupports.lollipop()) {
67
         if (!SdkSupports.lollipop()) {
69
             return;
68
             return;
70
         }
69
         }
71
 
70
 
72
         final Activity context = (Activity) getContext();
71
         final Activity context = (Activity) getContext();
73
         final Window window = context.getWindow();
72
         final Window window = context.getWindow();
74
-        if (statusBarColor > 0) {
75
-            window.setStatusBarColor(statusBarColor);
73
+        if (statusBarColor.hasColor()) {
74
+            window.setStatusBarColor(statusBarColor.getColor());
76
         } else {
75
         } else {
77
             window.setStatusBarColor(Color.BLACK);
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
     @TargetApi(Build.VERSION_CODES.LOLLIPOP)
86
     @TargetApi(Build.VERSION_CODES.LOLLIPOP)
88
-    public void setNavigationBarColor(int navigationBarColor) {
87
+    public void setNavigationBarColor(ScreenStyleParams.Color navigationBarColor) {
89
         if (!SdkSupports.lollipop()) {
88
         if (!SdkSupports.lollipop()) {
90
             return;
89
             return;
91
         }
90
         }
92
 
91
 
93
         final Activity context = (Activity) getContext();
92
         final Activity context = (Activity) getContext();
94
         final Window window = context.getWindow();
93
         final Window window = context.getWindow();
95
-        if (navigationBarColor > 0) {
96
-            window.setNavigationBarColor(navigationBarColor);
94
+        if (navigationBarColor.hasColor()) {
95
+            window.setNavigationBarColor(navigationBarColor.getColor());
97
         } else {
96
         } else {
98
             window.setNavigationBarColor(Color.BLACK);
97
             window.setNavigationBarColor(Color.BLACK);
99
         }
98
         }

+ 23
- 6
android/app/src/main/java/com/reactnativenavigation/params/ScreenStyleParams.java 파일 보기

3
 import android.support.annotation.ColorInt;
3
 import android.support.annotation.ColorInt;
4
 
4
 
5
 public class ScreenStyleParams {
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
     public boolean titleBarHidden;
29
     public boolean titleBarHidden;
13
     public boolean topBarHidden;
30
     public boolean topBarHidden;
14
     public boolean backButtonHidden;
31
     public boolean backButtonHidden;

+ 1
- 3
android/app/src/main/java/com/reactnativenavigation/params/TitleBarButtonParams.java 파일 보기

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

+ 3
- 3
android/app/src/main/java/com/reactnativenavigation/params/parsers/ScreenStyleParamsParser.java 파일 보기

11
             return result;
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
         result.titleBarHidden = params.getBoolean("titleBarHidden");
17
         result.titleBarHidden = params.getBoolean("titleBarHidden");
18
         result.backButtonHidden = params.getBoolean("backButtonHidden");
18
         result.backButtonHidden = params.getBoolean("backButtonHidden");
19
         result.topTabsHidden = params.getBoolean("topTabsHidden");
19
         result.topTabsHidden = params.getBoolean("topTabsHidden");

+ 2
- 1
android/app/src/main/java/com/reactnativenavigation/params/parsers/TitleBarButtonParamsParser.java 파일 보기

2
 
2
 
3
 import android.os.Bundle;
3
 import android.os.Bundle;
4
 
4
 
5
+import com.reactnativenavigation.params.ScreenStyleParams;
5
 import com.reactnativenavigation.params.TitleBarButtonParams;
6
 import com.reactnativenavigation.params.TitleBarButtonParams;
6
 import com.reactnativenavigation.react.ImageLoader;
7
 import com.reactnativenavigation.react.ImageLoader;
7
 
8
 
27
         if (hasKey(bundle,"icon")) {
28
         if (hasKey(bundle,"icon")) {
28
             result.icon = ImageLoader.loadImage(bundle.getString("icon"));
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
         result.showAsAction = parseShowAsAction(bundle.getString("showAsAction"));
32
         result.showAsAction = parseShowAsAction(bundle.getString("showAsAction"));
32
         result.enabled = bundle.getBoolean("enabled", true);
33
         result.enabled = bundle.getBoolean("enabled", true);
33
         return result;
34
         return result;

+ 3
- 4
android/app/src/main/java/com/reactnativenavigation/views/TitleBarButton.java 파일 보기

53
     }
53
     }
54
 
54
 
55
     private void setIconColor() {
55
     private void setIconColor() {
56
-        ImageUtils.tint(buttonParams.icon, buttonParams.color);
56
+        ImageUtils.tint(buttonParams.icon, buttonParams.color.getColor());
57
     }
57
     }
58
 
58
 
59
     private void setTextColor() {
59
     private void setTextColor() {
75
 
75
 
76
     private void setTextColorForFoundButtonViews(ArrayList<View> outViews) {
76
     private void setTextColorForFoundButtonViews(ArrayList<View> outViews) {
77
         for (View button : outViews) {
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
     }
84
     }
85
 
85
 
86
     private boolean hasColor() {
86
     private boolean hasColor() {
87
-        return buttonParams.color > 0;
87
+        return buttonParams.color.hasColor();
88
     }
88
     }
89
-
90
 }
89
 }