Bladeren bron

Support loading images from local storage

closes #276
Guy Carmeli 8 jaren geleden
bovenliggende
commit
49a1aed390
1 gewijzigde bestanden met toevoegingen van 21 en 1 verwijderingen
  1. 21
    1
      android/app/src/main/java/com/reactnativenavigation/react/ImageLoader.java

+ 21
- 1
android/app/src/main/java/com/reactnativenavigation/react/ImageLoader.java Bestand weergeven

1
 package com.reactnativenavigation.react;
1
 package com.reactnativenavigation.react;
2
 
2
 
3
+import android.graphics.drawable.BitmapDrawable;
3
 import android.graphics.drawable.Drawable;
4
 import android.graphics.drawable.Drawable;
5
+import android.net.Uri;
4
 
6
 
5
 import com.reactnativenavigation.NavigationApplication;
7
 import com.reactnativenavigation.NavigationApplication;
6
 
8
 
7
 public class ImageLoader {
9
 public class ImageLoader {
10
+    private static final String FILE_SCHEME = "file";
8
 
11
 
9
     public static Drawable loadImage(String iconSource) {
12
     public static Drawable loadImage(String iconSource) {
10
         if (NavigationApplication.instance.isDebug()) {
13
         if (NavigationApplication.instance.isDebug()) {
11
             return JsDevImageLoader.loadIcon(iconSource);
14
             return JsDevImageLoader.loadIcon(iconSource);
12
         } else {
15
         } else {
13
-            return ResourceDrawableIdHelper.instance.getResourceDrawable(NavigationApplication.instance, iconSource);
16
+            Uri uri = Uri.parse(iconSource);
17
+            if (isLocalFile(uri)) {
18
+                return loadFile(uri);
19
+            } else {
20
+                return loadResource(iconSource);
21
+            }
14
         }
22
         }
15
     }
23
     }
24
+
25
+    private static boolean isLocalFile(Uri uri) {
26
+        return FILE_SCHEME.equals(uri.getScheme());
27
+    }
28
+
29
+    private static Drawable loadFile(Uri uri) {
30
+        return new BitmapDrawable(NavigationApplication.instance.getResources(), uri.getPath());
31
+    }
32
+
33
+    private static Drawable loadResource(String iconSource) {
34
+        return ResourceDrawableIdHelper.instance.getResourceDrawable(NavigationApplication.instance, iconSource);
35
+    }
16
 }
36
 }