aboutsummaryrefslogtreecommitdiff
path: root/src/main/java/com/android/volley/toolbox/NetworkImageView.java
diff options
context:
space:
mode:
Diffstat (limited to 'src/main/java/com/android/volley/toolbox/NetworkImageView.java')
-rw-r--r--src/main/java/com/android/volley/toolbox/NetworkImageView.java71
1 files changed, 62 insertions, 9 deletions
diff --git a/src/main/java/com/android/volley/toolbox/NetworkImageView.java b/src/main/java/com/android/volley/toolbox/NetworkImageView.java
index 53affc3..a24b3e2 100644
--- a/src/main/java/com/android/volley/toolbox/NetworkImageView.java
+++ b/src/main/java/com/android/volley/toolbox/NetworkImageView.java
@@ -15,6 +15,7 @@ package com.android.volley.toolbox;
import android.content.Context;
import android.graphics.Bitmap;
+import android.graphics.drawable.Drawable;
import android.text.TextUtils;
import android.util.AttributeSet;
import android.view.ViewGroup.LayoutParams;
@@ -32,25 +33,37 @@ public class NetworkImageView extends ImageView {
/**
* Resource ID of the image to be used as a placeholder until the network image is loaded. Won't
- * be set at the same time as mDefaultImageBitmap.
+ * be set at the same time as mDefaultImageDrawable or mDefaultImageBitmap.
*/
private int mDefaultImageId;
/**
+ * Drawable of the image to be used as a placeholder until the network image is loaded. Won't be
+ * set at the same time as mDefaultImageId or mDefaultImageBitmap.
+ */
+ @Nullable private Drawable mDefaultImageDrawable;
+
+ /**
* Bitmap of the image to be used as a placeholder until the network image is loaded. Won't be
- * set at the same time as mDefaultImageId.
+ * set at the same time as mDefaultImageId or mDefaultImageDrawable.
*/
- @Nullable Bitmap mDefaultImageBitmap;
+ @Nullable private Bitmap mDefaultImageBitmap;
/**
* Resource ID of the image to be used if the network response fails. Won't be set at the same
- * time as mErrorImageBitmap.
+ * time as mErrorImageDrawable or mErrorImageBitmap.
*/
private int mErrorImageId;
/**
* Bitmap of the image to be used if the network response fails. Won't be set at the same time
- * as mErrorImageId.
+ * as mErrorImageId or mErrorImageBitmap.
+ */
+ @Nullable private Drawable mErrorImageDrawable;
+
+ /**
+ * Bitmap of the image to be used if the network response fails. Won't be set at the same time
+ * as mErrorImageId or mErrorImageDrawable.
*/
@Nullable private Bitmap mErrorImageBitmap;
@@ -100,21 +113,38 @@ public class NetworkImageView extends ImageView {
* Sets the default image resource ID to be used for this view until the attempt to load it
* completes.
*
- * <p>This will clear anything set by {@link NetworkImageView#setDefaultImageBitmap}.
+ * <p>This will clear anything set by {@link NetworkImageView#setDefaultImageBitmap} or {@link
+ * NetworkImageView#setDefaultImageDrawable}.
*/
public void setDefaultImageResId(int defaultImage) {
mDefaultImageBitmap = null;
+ mDefaultImageDrawable = null;
mDefaultImageId = defaultImage;
}
/**
+ * Sets the default image drawable to be used for this view until the attempt to load it
+ * completes.
+ *
+ * <p>This will clear anything set by {@link NetworkImageView#setDefaultImageResId} or {@link
+ * NetworkImageView#setDefaultImageBitmap}.
+ */
+ public void setDefaultImageDrawable(@Nullable Drawable defaultImageDrawable) {
+ mDefaultImageId = 0;
+ mDefaultImageBitmap = null;
+ mDefaultImageDrawable = defaultImageDrawable;
+ }
+
+ /**
* Sets the default image bitmap to be used for this view until the attempt to load it
* completes.
*
- * <p>This will clear anything set by {@link NetworkImageView#setDefaultImageResId}.
+ * <p>This will clear anything set by {@link NetworkImageView#setDefaultImageResId} or {@link
+ * NetworkImageView#setDefaultImageDrawable}.
*/
public void setDefaultImageBitmap(Bitmap defaultImage) {
mDefaultImageId = 0;
+ mDefaultImageDrawable = null;
mDefaultImageBitmap = defaultImage;
}
@@ -122,21 +152,38 @@ public class NetworkImageView extends ImageView {
* Sets the error image resource ID to be used for this view in the event that the image
* requested fails to load.
*
- * <p>This will clear anything set by {@link NetworkImageView#setErrorImageBitmap}.
+ * <p>This will clear anything set by {@link NetworkImageView#setErrorImageBitmap} or {@link
+ * NetworkImageView#setErrorImageDrawable}.
*/
public void setErrorImageResId(int errorImage) {
mErrorImageBitmap = null;
+ mErrorImageDrawable = null;
mErrorImageId = errorImage;
}
/**
+ * Sets the error image drawable to be used for this view in the event that the image requested
+ * fails to load.
+ *
+ * <p>This will clear anything set by {@link NetworkImageView#setErrorImageResId} or {@link
+ * NetworkImageView#setDefaultImageBitmap}.
+ */
+ public void setErrorImageDrawable(@Nullable Drawable errorImageDrawable) {
+ mErrorImageId = 0;
+ mErrorImageBitmap = null;
+ mErrorImageDrawable = errorImageDrawable;
+ }
+
+ /**
* Sets the error image bitmap to be used for this view in the event that the image requested
* fails to load.
*
- * <p>This will clear anything set by {@link NetworkImageView#setErrorImageResId}.
+ * <p>This will clear anything set by {@link NetworkImageView#setErrorImageResId} or {@link
+ * NetworkImageView#setDefaultImageDrawable}.
*/
public void setErrorImageBitmap(Bitmap errorImage) {
mErrorImageId = 0;
+ mErrorImageDrawable = null;
mErrorImageBitmap = errorImage;
}
@@ -202,6 +249,8 @@ public class NetworkImageView extends ImageView {
public void onErrorResponse(VolleyError error) {
if (mErrorImageId != 0) {
setImageResource(mErrorImageId);
+ } else if (mErrorImageDrawable != null) {
+ setImageDrawable(mErrorImageDrawable);
} else if (mErrorImageBitmap != null) {
setImageBitmap(mErrorImageBitmap);
}
@@ -232,6 +281,8 @@ public class NetworkImageView extends ImageView {
setImageBitmap(response.getBitmap());
} else if (mDefaultImageId != 0) {
setImageResource(mDefaultImageId);
+ } else if (mDefaultImageDrawable != null) {
+ setImageDrawable(mDefaultImageDrawable);
} else if (mDefaultImageBitmap != null) {
setImageBitmap(mDefaultImageBitmap);
}
@@ -245,6 +296,8 @@ public class NetworkImageView extends ImageView {
private void setDefaultImageOrNull() {
if (mDefaultImageId != 0) {
setImageResource(mDefaultImageId);
+ } else if (mDefaultImageDrawable != null) {
+ setImageDrawable(mDefaultImageDrawable);
} else if (mDefaultImageBitmap != null) {
setImageBitmap(mDefaultImageBitmap);
} else {