mirror of
https://github.com/zhigang1992/react-native.git
synced 2026-04-05 17:30:38 +08:00
Extract ImageRequest creation into a helper class
Summary: This diff add an ImageRequestHelper class to reuse code that creates ImageRequest in both RCTImageView and (upcoming) RCTTextInlineImage Reviewed By: ahmedre Differential Revision: D2792548
This commit is contained in:
committed by
Ahmed El-Helw
parent
368e0361dd
commit
0f2a5cffa7
@@ -0,0 +1,48 @@
|
||||
/**
|
||||
* Copyright (c) 2015-present, Facebook, Inc.
|
||||
* All rights reserved.
|
||||
*
|
||||
* This source code is licensed under the BSD-style license found in the
|
||||
* LICENSE file in the root directory of this source tree. An additional grant
|
||||
* of patent rights can be found in the PATENTS file in the same directory.
|
||||
*/
|
||||
|
||||
package com.facebook.react.flat;
|
||||
|
||||
import javax.annotation.Nullable;
|
||||
|
||||
import android.content.Context;
|
||||
import android.content.res.Resources;
|
||||
import android.net.Uri;
|
||||
|
||||
import com.facebook.imagepipeline.request.ImageRequest;
|
||||
import com.facebook.imagepipeline.request.ImageRequestBuilder;
|
||||
|
||||
/* package */ class ImageRequestHelper {
|
||||
|
||||
/* package */ static @Nullable ImageRequest createImageRequest(
|
||||
Context context,
|
||||
@Nullable String source) {
|
||||
if (source == null) {
|
||||
return null;
|
||||
}
|
||||
|
||||
final ImageRequestBuilder imageRequestBuilder;
|
||||
if (isNetworkResource(source)) {
|
||||
imageRequestBuilder = ImageRequestBuilder.newBuilderWithSource(Uri.parse(source));
|
||||
} else {
|
||||
Resources resources = context.getResources();
|
||||
int resId = resources.getIdentifier(
|
||||
source,
|
||||
"drawable",
|
||||
context.getPackageName());
|
||||
imageRequestBuilder = ImageRequestBuilder.newBuilderWithResourceId(resId);
|
||||
}
|
||||
|
||||
return imageRequestBuilder.build();
|
||||
}
|
||||
|
||||
private static boolean isNetworkResource(String source) {
|
||||
return source.startsWith("http://") || source.startsWith("https://");
|
||||
}
|
||||
}
|
||||
@@ -11,13 +11,8 @@ package com.facebook.react.flat;
|
||||
|
||||
import javax.annotation.Nullable;
|
||||
|
||||
import android.content.Context;
|
||||
import android.content.res.Resources;
|
||||
import android.net.Uri;
|
||||
|
||||
import com.facebook.csslayout.Spacing;
|
||||
import com.facebook.drawee.drawable.ScalingUtils.ScaleType;
|
||||
import com.facebook.imagepipeline.request.ImageRequestBuilder;
|
||||
import com.facebook.react.uimanager.PixelUtil;
|
||||
import com.facebook.react.uimanager.ReactProp;
|
||||
import com.facebook.react.uimanager.ViewProps;
|
||||
@@ -87,25 +82,8 @@ import com.facebook.react.views.image.ImageResizeMode;
|
||||
|
||||
@ReactProp(name = "src")
|
||||
public void setSource(@Nullable String source) {
|
||||
if (source == null) {
|
||||
getMutableDrawImage().setImageRequest(null);
|
||||
return;
|
||||
}
|
||||
|
||||
final ImageRequestBuilder imageRequestBuilder;
|
||||
if (isNetworkResource(source)) {
|
||||
imageRequestBuilder = ImageRequestBuilder.newBuilderWithSource(Uri.parse(source));
|
||||
} else {
|
||||
Context context = getThemedContext();
|
||||
Resources resources = context.getResources();
|
||||
int resId = resources.getIdentifier(
|
||||
source,
|
||||
"drawable",
|
||||
context.getPackageName());
|
||||
imageRequestBuilder = ImageRequestBuilder.newBuilderWithResourceId(resId);
|
||||
}
|
||||
|
||||
getMutableDrawImage().setImageRequest(imageRequestBuilder.build());
|
||||
getMutableDrawImage().setImageRequest(
|
||||
ImageRequestHelper.createImageRequest(getThemedContext(), source));
|
||||
}
|
||||
|
||||
@ReactProp(name = "tintColor")
|
||||
|
||||
Reference in New Issue
Block a user