mirror of
https://github.com/facebook/react-native.git
synced 2025-11-01 09:14:26 +00:00
Add GlobalImageLoadListener
Reviewed By: AaaChiuuu Differential Revision: D5932865 fbshipit-source-id: 700983d7fc44c4ee5f77b58ef54cec62869009e0
This commit is contained in:
committed by
Facebook Github Bot
parent
15130d5fa2
commit
7320ca5c7a
@@ -9,18 +9,12 @@
|
||||
|
||||
package com.facebook.react.flat;
|
||||
|
||||
import javax.annotation.Nullable;
|
||||
|
||||
import java.util.LinkedList;
|
||||
import java.util.List;
|
||||
|
||||
import android.content.Context;
|
||||
import android.graphics.Canvas;
|
||||
import android.graphics.PorterDuff;
|
||||
import android.graphics.PorterDuffColorFilter;
|
||||
import android.graphics.drawable.Animatable;
|
||||
import android.net.Uri;
|
||||
|
||||
import com.facebook.drawee.controller.ControllerListener;
|
||||
import com.facebook.drawee.drawable.ScalingUtils.ScaleType;
|
||||
import com.facebook.drawee.generic.GenericDraweeHierarchy;
|
||||
@@ -31,12 +25,16 @@ import com.facebook.imagepipeline.request.ImageRequestBuilder;
|
||||
import com.facebook.infer.annotation.Assertions;
|
||||
import com.facebook.react.bridge.ReadableArray;
|
||||
import com.facebook.react.bridge.ReadableMap;
|
||||
import com.facebook.react.views.image.GlobalImageLoadListener;
|
||||
import com.facebook.react.views.image.ImageLoadEvent;
|
||||
import com.facebook.react.views.image.ImageResizeMode;
|
||||
import com.facebook.react.views.image.ReactImageView;
|
||||
import com.facebook.react.views.imagehelper.ImageSource;
|
||||
import com.facebook.react.views.imagehelper.MultiSourceHelper;
|
||||
import com.facebook.react.views.imagehelper.MultiSourceHelper.MultiSourceResult;
|
||||
import java.util.LinkedList;
|
||||
import java.util.List;
|
||||
import javax.annotation.Nullable;
|
||||
|
||||
/**
|
||||
* DrawImageWithDrawee is a DrawCommand that can draw a local or remote image.
|
||||
@@ -48,6 +46,7 @@ import com.facebook.react.views.imagehelper.MultiSourceHelper.MultiSourceResult;
|
||||
private static final String LOCAL_CONTENT_SCHEME = "content";
|
||||
|
||||
private final List<ImageSource> mSources = new LinkedList<>();
|
||||
private final @Nullable GlobalImageLoadListener mGlobalImageLoadListener;
|
||||
private @Nullable DraweeRequestHelper mRequestHelper;
|
||||
private @Nullable PorterDuffColorFilter mColorFilter;
|
||||
private ScaleType mScaleType = ImageResizeMode.defaultValue();
|
||||
@@ -59,6 +58,10 @@ import com.facebook.react.views.imagehelper.MultiSourceHelper.MultiSourceResult;
|
||||
private int mFadeDuration = ReactImageView.REMOTE_IMAGE_FADE_DURATION_MS;
|
||||
private @Nullable FlatViewGroup.InvalidateCallback mCallback;
|
||||
|
||||
public DrawImageWithDrawee(@Nullable GlobalImageLoadListener globalImageLoadListener) {
|
||||
mGlobalImageLoadListener = globalImageLoadListener;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean hasImageRequest() {
|
||||
return !mSources.isEmpty();
|
||||
@@ -274,6 +277,9 @@ import com.facebook.react.views.imagehelper.MultiSourceHelper.MultiSourceResult;
|
||||
.setResizeOptions(resizeOptions)
|
||||
.setProgressiveRenderingEnabled(mProgressiveRenderingEnabled)
|
||||
.build();
|
||||
if (mGlobalImageLoadListener != null) {
|
||||
mGlobalImageLoadListener.onLoadAttempt(source.getUri());
|
||||
}
|
||||
|
||||
ImageRequest cachedImageRequest = null;
|
||||
if (cachedSource != null) {
|
||||
|
||||
@@ -11,7 +11,7 @@ package com.facebook.react.flat;
|
||||
|
||||
import com.facebook.drawee.backends.pipeline.Fresco;
|
||||
import com.facebook.drawee.controller.AbstractDraweeControllerBuilder;
|
||||
|
||||
import com.facebook.react.views.image.GlobalImageLoadListener;
|
||||
import javax.annotation.Nullable;
|
||||
|
||||
public final class RCTImageViewManager extends FlatViewManager {
|
||||
@@ -19,6 +19,7 @@ public final class RCTImageViewManager extends FlatViewManager {
|
||||
/* package */ static final String REACT_CLASS = "RCTImageView";
|
||||
|
||||
private @Nullable AbstractDraweeControllerBuilder mDraweeControllerBuilder;
|
||||
private @Nullable GlobalImageLoadListener mGlobalImageLoadListener;
|
||||
private final @Nullable Object mCallerContext;
|
||||
|
||||
public RCTImageViewManager() {
|
||||
@@ -28,7 +29,15 @@ public final class RCTImageViewManager extends FlatViewManager {
|
||||
public RCTImageViewManager(
|
||||
AbstractDraweeControllerBuilder draweeControllerBuilder,
|
||||
Object callerContext) {
|
||||
this(draweeControllerBuilder, null, callerContext);
|
||||
}
|
||||
|
||||
public RCTImageViewManager(
|
||||
AbstractDraweeControllerBuilder draweeControllerBuilder,
|
||||
@Nullable GlobalImageLoadListener globalImageLoadListener,
|
||||
Object callerContext) {
|
||||
mDraweeControllerBuilder = draweeControllerBuilder;
|
||||
mGlobalImageLoadListener = globalImageLoadListener;
|
||||
mCallerContext = callerContext;
|
||||
}
|
||||
|
||||
@@ -39,7 +48,7 @@ public final class RCTImageViewManager extends FlatViewManager {
|
||||
|
||||
@Override
|
||||
public RCTImageView createShadowNodeInstance() {
|
||||
return new RCTImageView(new DrawImageWithDrawee());
|
||||
return new RCTImageView(new DrawImageWithDrawee(mGlobalImageLoadListener));
|
||||
}
|
||||
|
||||
@Override
|
||||
|
||||
Reference in New Issue
Block a user