diff --git a/ReactAndroid/src/main/java/com/facebook/react/views/image/ReactImageView.java b/ReactAndroid/src/main/java/com/facebook/react/views/image/ReactImageView.java index 940ae7f1b..1c6625fd7 100644 --- a/ReactAndroid/src/main/java/com/facebook/react/views/image/ReactImageView.java +++ b/ReactAndroid/src/main/java/com/facebook/react/views/image/ReactImageView.java @@ -30,6 +30,7 @@ import com.facebook.drawee.controller.BaseControllerListener; import com.facebook.drawee.controller.ControllerListener; import com.facebook.drawee.controller.ForwardingControllerListener; import com.facebook.drawee.drawable.AutoRotateDrawable; +import com.facebook.drawee.drawable.RoundedColorDrawable; import com.facebook.drawee.drawable.ScalingUtils; import com.facebook.drawee.generic.GenericDraweeHierarchy; import com.facebook.drawee.generic.GenericDraweeHierarchyBuilder; @@ -148,6 +149,7 @@ public class ReactImageView extends GenericDraweeView { private @Nullable ImageSource mImageSource; private @Nullable ImageSource mCachedImageSource; private @Nullable Drawable mLoadingImageDrawable; + private @Nullable RoundedColorDrawable mBackgroundImageDrawable; private int mBorderColor; private int mOverlayColor; private float mBorderWidth; @@ -238,6 +240,12 @@ public class ReactImageView extends GenericDraweeView { mIsDirty = true; } + @Override + public void setBackgroundColor(int backgroundColor) { + mBackgroundImageDrawable = new RoundedColorDrawable(backgroundColor); + mIsDirty = true; + } + public void setBorderColor(int borderColor) { mBorderColor = borderColor; mIsDirty = true; @@ -377,12 +385,17 @@ public class ReactImageView extends GenericDraweeView { RoundingParams roundingParams = hierarchy.getRoundingParams(); + cornerRadii(sComputedCornerRadii); + roundingParams.setCornersRadii(sComputedCornerRadii[0], sComputedCornerRadii[1], sComputedCornerRadii[2], sComputedCornerRadii[3]); + + if (mBackgroundImageDrawable != null) { + mBackgroundImageDrawable.setBorder(mBorderColor, mBorderWidth); + mBackgroundImageDrawable.setRadii(roundingParams.getCornersRadii()); + hierarchy.setBackgroundImage(mBackgroundImageDrawable); + } + if (usePostprocessorScaling) { roundingParams.setCornersRadius(0); - } else { - cornerRadii(sComputedCornerRadii); - - roundingParams.setCornersRadii(sComputedCornerRadii[0], sComputedCornerRadii[1], sComputedCornerRadii[2], sComputedCornerRadii[3]); } roundingParams.setBorder(mBorderColor, mBorderWidth);