summaryrefslogtreecommitdiff
path: root/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/utils/BitmapUtils.java
diff options
context:
space:
mode:
Diffstat (limited to 'platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/utils/BitmapUtils.java')
-rw-r--r--platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/utils/BitmapUtils.java44
1 files changed, 44 insertions, 0 deletions
diff --git a/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/utils/BitmapUtils.java b/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/utils/BitmapUtils.java
index f14e49cb6a..3ef8e93cae 100644
--- a/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/utils/BitmapUtils.java
+++ b/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/utils/BitmapUtils.java
@@ -4,11 +4,16 @@ import android.content.Context;
import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.graphics.Canvas;
+import android.graphics.PorterDuff;
import android.graphics.drawable.BitmapDrawable;
import android.graphics.drawable.Drawable;
+import android.os.Build;
+import android.support.annotation.ColorInt;
+import android.support.annotation.DrawableRes;
import android.support.annotation.NonNull;
import android.support.annotation.Nullable;
import android.support.annotation.VisibleForTesting;
+import android.support.v7.content.res.AppCompatResources;
import android.view.View;
import java.io.ByteArrayOutputStream;
@@ -124,6 +129,45 @@ public class BitmapUtils {
return new BitmapDrawable(context.getResources(), compass);
}
+ /**
+ * Get a drawable from a resource.
+ *
+ * @param context Context to obtain {@link android.content.res.Resources}
+ * @param drawableRes Drawable resource
+ * @return The drawable created from the resource
+ */
+ @Nullable
+ public static Drawable getDrawableFromRes(@NonNull Context context, @DrawableRes int drawableRes) {
+ return getDrawableFromRes(context, drawableRes, null);
+ }
+
+ /**
+ * Get a tinted drawable from a resource.
+ *
+ * @param context Context to obtain {@link android.content.res.Resources}
+ * @param drawableRes Drawable resource
+ * @param tintColor Tint color
+ * @return The drawable created from the resource
+ */
+ @Nullable
+ public static Drawable getDrawableFromRes(@NonNull Context context, @DrawableRes int drawableRes,
+ @Nullable @ColorInt Integer tintColor) {
+ Drawable drawable = AppCompatResources.getDrawable(context, drawableRes);
+ if (drawable == null) {
+ return null;
+ }
+
+ if (tintColor == null) {
+ return drawable;
+ }
+
+ if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
+ drawable.setTint(tintColor);
+ } else {
+ drawable.mutate().setColorFilter(tintColor, PorterDuff.Mode.SRC_IN);
+ }
+ return drawable;
+ }
/**
* Validates if the bytes of a bitmap matches another