diff --git a/ReactAndroid/src/main/java/com/facebook/react/views/image/ImageLoadEvent.java b/ReactAndroid/src/main/java/com/facebook/react/views/image/ImageLoadEvent.java index cee5ebc34..f47c34540 100644 --- a/ReactAndroid/src/main/java/com/facebook/react/views/image/ImageLoadEvent.java +++ b/ReactAndroid/src/main/java/com/facebook/react/views/image/ImageLoadEvent.java @@ -36,22 +36,32 @@ public class ImageLoadEvent extends Event { private final int mEventType; private final @Nullable String mImageUri; + private final int mWidth; + private final int mHeight; public ImageLoadEvent(int viewId, @ImageEventType int eventType) { this(viewId, eventType, null); } + public ImageLoadEvent(int viewId, @ImageEventType int eventType, String imageUri) { + this(viewId, eventType, imageUri, 0, 0); + } + public ImageLoadEvent( int viewId, @ImageEventType int eventType, - @Nullable String imageUri) { + @Nullable String imageUri, + int width, + int height) { super(viewId); mEventType = eventType; mImageUri = imageUri; + mWidth = width; + mHeight = height; } public static String eventNameForType(@ImageEventType int eventType) { - switch(eventType) { + switch (eventType) { case ON_ERROR: return "topError"; case ON_LOAD: @@ -82,10 +92,25 @@ public class ImageLoadEvent extends Event { @Override public void dispatch(RCTEventEmitter rctEventEmitter) { WritableMap eventData = null; - if (mImageUri != null) { + + if (mImageUri != null || mEventType == ON_LOAD) { eventData = Arguments.createMap(); - eventData.putString("uri", mImageUri); + + if (mImageUri != null) { + eventData.putString("uri", mImageUri); + } + + if (mEventType == ON_LOAD) { + WritableMap source = Arguments.createMap(); + source.putDouble("width", mWidth); + source.putDouble("height", mHeight); + if (mImageUri != null) { + source.putString("url", mImageUri); + } + eventData.putMap("source", source); + } } + rctEventEmitter.receiveEvent(getViewTag(), getEventName(), eventData); } } 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 ad3ac5cf9..3c6214b60 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 @@ -201,7 +201,8 @@ public class ReactImageView extends GenericDraweeView { @Nullable Animatable animatable) { if (imageInfo != null) { mEventDispatcher.dispatchEvent( - new ImageLoadEvent(getId(), ImageLoadEvent.ON_LOAD)); + new ImageLoadEvent(getId(), ImageLoadEvent.ON_LOAD, + mImageSource.getSource(), imageInfo.getWidth(), imageInfo.getHeight())); mEventDispatcher.dispatchEvent( new ImageLoadEvent(getId(), ImageLoadEvent.ON_LOAD_END)); }