mirror of
https://github.com/facebook/react-native.git
synced 2025-11-01 09:14:26 +00:00
Add "resizeMode" prop support on TextInlineView
Summary: changelog: [Android] [Added] Add "resizeMode" prop support on TextInlineView Reviewed By: JoshuaGross Differential Revision: D19509347 fbshipit-source-id: 0281ae6e958401aaaaa10599df892a2b60a3c615
This commit is contained in:
committed by
Facebook Github Bot
parent
6a1438c044
commit
6871416328
@@ -22,6 +22,7 @@ rn_android_library(
|
||||
react_native_target("java/com/facebook/react/modules/fresco:fresco"),
|
||||
react_native_target("java/com/facebook/react/uimanager:uimanager"),
|
||||
react_native_target("java/com/facebook/react/uimanager/annotations:annotations"),
|
||||
react_native_target("java/com/facebook/react/views/image:image"),
|
||||
react_native_target("java/com/facebook/react/views/text:text"),
|
||||
],
|
||||
)
|
||||
|
||||
+9
-1
@@ -18,6 +18,7 @@ import com.facebook.react.bridge.JSApplicationIllegalArgumentException;
|
||||
import com.facebook.react.bridge.ReadableArray;
|
||||
import com.facebook.react.bridge.ReadableMap;
|
||||
import com.facebook.react.bridge.ReadableType;
|
||||
import com.facebook.react.uimanager.ViewProps;
|
||||
import com.facebook.react.uimanager.annotations.ReactProp;
|
||||
import com.facebook.react.views.text.ReactTextInlineImageShadowNode;
|
||||
import com.facebook.react.views.text.TextInlineImageSpan;
|
||||
@@ -32,6 +33,7 @@ public class FrescoBasedReactTextInlineImageShadowNode extends ReactTextInlineIm
|
||||
private final AbstractDraweeControllerBuilder mDraweeControllerBuilder;
|
||||
private final @Nullable Object mCallerContext;
|
||||
private float mWidth = YogaConstants.UNDEFINED;
|
||||
private @Nullable String mResizeMode;
|
||||
private float mHeight = YogaConstants.UNDEFINED;
|
||||
private int mTintColor = 0;
|
||||
|
||||
@@ -97,6 +99,11 @@ public class FrescoBasedReactTextInlineImageShadowNode extends ReactTextInlineIm
|
||||
}
|
||||
}
|
||||
|
||||
@ReactProp(name = ViewProps.RESIZE_MODE)
|
||||
public void setResizeMode(@Nullable String resizeMode) {
|
||||
mResizeMode = resizeMode;
|
||||
}
|
||||
|
||||
public @Nullable Uri getUri() {
|
||||
return mUri;
|
||||
}
|
||||
@@ -136,7 +143,8 @@ public class FrescoBasedReactTextInlineImageShadowNode extends ReactTextInlineIm
|
||||
getUri(),
|
||||
getHeaders(),
|
||||
getDraweeControllerBuilder(),
|
||||
getCallerContext());
|
||||
getCallerContext(),
|
||||
mResizeMode);
|
||||
}
|
||||
|
||||
public AbstractDraweeControllerBuilder getDraweeControllerBuilder() {
|
||||
|
||||
+11
-2
@@ -16,6 +16,7 @@ import android.net.Uri;
|
||||
import android.widget.TextView;
|
||||
import androidx.annotation.Nullable;
|
||||
import com.facebook.drawee.controller.AbstractDraweeControllerBuilder;
|
||||
import com.facebook.drawee.drawable.ScalingUtils;
|
||||
import com.facebook.drawee.generic.GenericDraweeHierarchy;
|
||||
import com.facebook.drawee.generic.GenericDraweeHierarchyBuilder;
|
||||
import com.facebook.drawee.interfaces.DraweeController;
|
||||
@@ -25,6 +26,7 @@ import com.facebook.imagepipeline.request.ImageRequestBuilder;
|
||||
import com.facebook.react.bridge.ReadableMap;
|
||||
import com.facebook.react.modules.fresco.ReactNetworkImageRequest;
|
||||
import com.facebook.react.uimanager.PixelUtil;
|
||||
import com.facebook.react.views.image.ImageResizeMode;
|
||||
import com.facebook.react.views.text.TextInlineImageSpan;
|
||||
|
||||
/**
|
||||
@@ -50,6 +52,7 @@ public class FrescoBasedReactTextInlineImageSpan extends TextInlineImageSpan {
|
||||
private Uri mUri;
|
||||
private int mWidth;
|
||||
private ReadableMap mHeaders;
|
||||
private String mResizeMode;
|
||||
|
||||
private @Nullable TextView mTextView;
|
||||
|
||||
@@ -61,7 +64,8 @@ public class FrescoBasedReactTextInlineImageSpan extends TextInlineImageSpan {
|
||||
@Nullable Uri uri,
|
||||
ReadableMap headers,
|
||||
AbstractDraweeControllerBuilder draweeControllerBuilder,
|
||||
@Nullable Object callerContext) {
|
||||
@Nullable Object callerContext,
|
||||
String resizeMode) {
|
||||
mDraweeHolder = new DraweeHolder(GenericDraweeHierarchyBuilder.newInstance(resources).build());
|
||||
mDraweeControllerBuilder = draweeControllerBuilder;
|
||||
mCallerContext = callerContext;
|
||||
@@ -70,6 +74,7 @@ public class FrescoBasedReactTextInlineImageSpan extends TextInlineImageSpan {
|
||||
mHeaders = headers;
|
||||
mWidth = (int) (PixelUtil.toPixelFromDIP(width));
|
||||
mHeight = (int) (PixelUtil.toPixelFromDIP(height));
|
||||
mResizeMode = resizeMode;
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -130,7 +135,7 @@ public class FrescoBasedReactTextInlineImageSpan extends TextInlineImageSpan {
|
||||
ImageRequestBuilder imageRequestBuilder = ImageRequestBuilder.newBuilderWithSource(mUri);
|
||||
ImageRequest imageRequest =
|
||||
ReactNetworkImageRequest.fromBuilderWithHeaders(imageRequestBuilder, mHeaders);
|
||||
|
||||
mDraweeHolder.getHierarchy().setActualImageScaleType(getResizeMode(mResizeMode));
|
||||
DraweeController draweeController =
|
||||
mDraweeControllerBuilder
|
||||
.reset()
|
||||
@@ -163,6 +168,10 @@ public class FrescoBasedReactTextInlineImageSpan extends TextInlineImageSpan {
|
||||
canvas.restore();
|
||||
}
|
||||
|
||||
private ScalingUtils.ScaleType getResizeMode(String resizeMode) {
|
||||
return ImageResizeMode.toScaleType(resizeMode);
|
||||
}
|
||||
|
||||
@Override
|
||||
public int getWidth() {
|
||||
return mWidth;
|
||||
|
||||
Reference in New Issue
Block a user