[android] - add style image missing binding integration, add synchronous
image overloads to style
This commit is contained in:
@@ -31,6 +31,8 @@ class MapChangeReceiver implements NativeMapView.StateCallback {
|
||||
private final List<MapView.OnDidFinishLoadingStyleListener> onDidFinishLoadingStyleListenerList
|
||||
= new CopyOnWriteArrayList<>();
|
||||
private final List<MapView.OnSourceChangedListener> onSourceChangedListenerList = new CopyOnWriteArrayList<>();
|
||||
private final List<MapView.OnStyleImageMissingListener> onStyleImageMissingListenerList
|
||||
= new CopyOnWriteArrayList<>();
|
||||
|
||||
@Override
|
||||
public void onCameraWillChange(boolean animated) {
|
||||
@@ -214,6 +216,20 @@ class MapChangeReceiver implements NativeMapView.StateCallback {
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onStyleImageMissing(String imageId) {
|
||||
try {
|
||||
if (!onStyleImageMissingListenerList.isEmpty()) {
|
||||
for (MapView.OnStyleImageMissingListener listener : onStyleImageMissingListenerList) {
|
||||
listener.onStyleImageMissing(imageId);
|
||||
}
|
||||
}
|
||||
} catch (Throwable err) {
|
||||
Logger.e(TAG, "Exception in onStyleImageMissing", err);
|
||||
throw err;
|
||||
}
|
||||
}
|
||||
|
||||
void addOnCameraWillChangeListener(MapView.OnCameraWillChangeListener listener) {
|
||||
onCameraWillChangeListenerList.add(listener);
|
||||
}
|
||||
@@ -318,6 +334,14 @@ class MapChangeReceiver implements NativeMapView.StateCallback {
|
||||
onSourceChangedListenerList.remove(listener);
|
||||
}
|
||||
|
||||
void addOnStyleImageMissingListener(MapView.OnStyleImageMissingListener listener) {
|
||||
onStyleImageMissingListenerList.add(listener);
|
||||
}
|
||||
|
||||
void removeOnStyleImageMissingListener(MapView.OnStyleImageMissingListener listener) {
|
||||
onStyleImageMissingListenerList.remove(listener);
|
||||
}
|
||||
|
||||
void clear() {
|
||||
onCameraWillChangeListenerList.clear();
|
||||
onCameraIsChangingListenerList.clear();
|
||||
@@ -332,5 +356,6 @@ class MapChangeReceiver implements NativeMapView.StateCallback {
|
||||
onDidBecomeIdleListenerList.clear();
|
||||
onDidFinishLoadingStyleListenerList.clear();
|
||||
onSourceChangedListenerList.clear();
|
||||
onStyleImageMissingListenerList.clear();
|
||||
}
|
||||
}
|
||||
@@ -568,7 +568,7 @@ public class MapView extends FrameLayout implements NativeMapView.ViewCallback {
|
||||
*
|
||||
* @param listener The callback that's invoked when the camera region will change
|
||||
*/
|
||||
public void addOnCameraWillChangeListener(OnCameraWillChangeListener listener) {
|
||||
public void addOnCameraWillChangeListener(@NonNull OnCameraWillChangeListener listener) {
|
||||
mapChangeReceiver.addOnCameraWillChangeListener(listener);
|
||||
}
|
||||
|
||||
@@ -577,7 +577,7 @@ public class MapView extends FrameLayout implements NativeMapView.ViewCallback {
|
||||
*
|
||||
* @param listener The callback that's invoked when the camera region will change
|
||||
*/
|
||||
public void removeOnCameraWillChangeListener(OnCameraWillChangeListener listener) {
|
||||
public void removeOnCameraWillChangeListener(@NonNull OnCameraWillChangeListener listener) {
|
||||
mapChangeReceiver.removeOnCameraWillChangeListener(listener);
|
||||
}
|
||||
|
||||
@@ -586,7 +586,7 @@ public class MapView extends FrameLayout implements NativeMapView.ViewCallback {
|
||||
*
|
||||
* @param listener The callback that's invoked when the camera is changing
|
||||
*/
|
||||
public void addOnCameraIsChangingListener(OnCameraIsChangingListener listener) {
|
||||
public void addOnCameraIsChangingListener(@NonNull OnCameraIsChangingListener listener) {
|
||||
mapChangeReceiver.addOnCameraIsChangingListener(listener);
|
||||
}
|
||||
|
||||
@@ -595,7 +595,7 @@ public class MapView extends FrameLayout implements NativeMapView.ViewCallback {
|
||||
*
|
||||
* @param listener The callback that's invoked when the camera is changing
|
||||
*/
|
||||
public void removeOnCameraIsChangingListener(OnCameraIsChangingListener listener) {
|
||||
public void removeOnCameraIsChangingListener(@NonNull OnCameraIsChangingListener listener) {
|
||||
mapChangeReceiver.removeOnCameraIsChangingListener(listener);
|
||||
}
|
||||
|
||||
@@ -604,7 +604,7 @@ public class MapView extends FrameLayout implements NativeMapView.ViewCallback {
|
||||
*
|
||||
* @param listener The callback that's invoked when the camera region did change
|
||||
*/
|
||||
public void addOnCameraDidChangeListener(OnCameraDidChangeListener listener) {
|
||||
public void addOnCameraDidChangeListener(@NonNull OnCameraDidChangeListener listener) {
|
||||
mapChangeReceiver.addOnCameraDidChangeListener(listener);
|
||||
}
|
||||
|
||||
@@ -613,7 +613,7 @@ public class MapView extends FrameLayout implements NativeMapView.ViewCallback {
|
||||
*
|
||||
* @param listener The callback that's invoked when the camera region did change
|
||||
*/
|
||||
public void removeOnCameraDidChangeListener(OnCameraDidChangeListener listener) {
|
||||
public void removeOnCameraDidChangeListener(@NonNull OnCameraDidChangeListener listener) {
|
||||
mapChangeReceiver.removeOnCameraDidChangeListener(listener);
|
||||
}
|
||||
|
||||
@@ -622,7 +622,7 @@ public class MapView extends FrameLayout implements NativeMapView.ViewCallback {
|
||||
*
|
||||
* @param listener The callback that's invoked when the map will start loading
|
||||
*/
|
||||
public void addOnWillStartLoadingMapListener(OnWillStartLoadingMapListener listener) {
|
||||
public void addOnWillStartLoadingMapListener(@NonNull OnWillStartLoadingMapListener listener) {
|
||||
mapChangeReceiver.addOnWillStartLoadingMapListener(listener);
|
||||
}
|
||||
|
||||
@@ -631,7 +631,7 @@ public class MapView extends FrameLayout implements NativeMapView.ViewCallback {
|
||||
*
|
||||
* @param listener The callback that's invoked when the map will start loading
|
||||
*/
|
||||
public void removeOnWillStartLoadingMapListener(OnWillStartLoadingMapListener listener) {
|
||||
public void removeOnWillStartLoadingMapListener(@NonNull OnWillStartLoadingMapListener listener) {
|
||||
mapChangeReceiver.removeOnWillStartLoadingMapListener(listener);
|
||||
}
|
||||
|
||||
@@ -640,7 +640,7 @@ public class MapView extends FrameLayout implements NativeMapView.ViewCallback {
|
||||
*
|
||||
* @param listener The callback that's invoked when the map has finished loading
|
||||
*/
|
||||
public void addOnDidFinishLoadingMapListener(OnDidFinishLoadingMapListener listener) {
|
||||
public void addOnDidFinishLoadingMapListener(@NonNull OnDidFinishLoadingMapListener listener) {
|
||||
mapChangeReceiver.addOnDidFinishLoadingMapListener(listener);
|
||||
}
|
||||
|
||||
@@ -649,7 +649,7 @@ public class MapView extends FrameLayout implements NativeMapView.ViewCallback {
|
||||
*
|
||||
* @param listener The callback that's invoked when the map has finished loading
|
||||
*/
|
||||
public void removeOnDidFinishLoadingMapListener(OnDidFinishLoadingMapListener listener) {
|
||||
public void removeOnDidFinishLoadingMapListener(@NonNull OnDidFinishLoadingMapListener listener) {
|
||||
mapChangeReceiver.removeOnDidFinishLoadingMapListener(listener);
|
||||
}
|
||||
|
||||
@@ -658,7 +658,7 @@ public class MapView extends FrameLayout implements NativeMapView.ViewCallback {
|
||||
*
|
||||
* @param listener The callback that's invoked when the map failed to load
|
||||
*/
|
||||
public void addOnDidFailLoadingMapListener(OnDidFailLoadingMapListener listener) {
|
||||
public void addOnDidFailLoadingMapListener(@NonNull OnDidFailLoadingMapListener listener) {
|
||||
mapChangeReceiver.addOnDidFailLoadingMapListener(listener);
|
||||
}
|
||||
|
||||
@@ -667,7 +667,7 @@ public class MapView extends FrameLayout implements NativeMapView.ViewCallback {
|
||||
*
|
||||
* @param listener The callback that's invoked when the map failed to load
|
||||
*/
|
||||
public void removeOnDidFailLoadingMapListener(OnDidFailLoadingMapListener listener) {
|
||||
public void removeOnDidFailLoadingMapListener(@NonNull OnDidFailLoadingMapListener listener) {
|
||||
mapChangeReceiver.removeOnDidFailLoadingMapListener(listener);
|
||||
}
|
||||
|
||||
@@ -676,7 +676,7 @@ public class MapView extends FrameLayout implements NativeMapView.ViewCallback {
|
||||
*
|
||||
* @param listener The callback that's invoked when the camera will start rendering a frame
|
||||
*/
|
||||
public void addOnWillStartRenderingFrameListener(OnWillStartRenderingFrameListener listener) {
|
||||
public void addOnWillStartRenderingFrameListener(@NonNull OnWillStartRenderingFrameListener listener) {
|
||||
mapChangeReceiver.addOnWillStartRenderingFrameListener(listener);
|
||||
}
|
||||
|
||||
@@ -685,7 +685,7 @@ public class MapView extends FrameLayout implements NativeMapView.ViewCallback {
|
||||
*
|
||||
* @param listener The callback that's invoked when the camera will start rendering a frame
|
||||
*/
|
||||
public void removeOnWillStartRenderingFrameListener(OnWillStartRenderingFrameListener listener) {
|
||||
public void removeOnWillStartRenderingFrameListener(@NonNull OnWillStartRenderingFrameListener listener) {
|
||||
mapChangeReceiver.removeOnWillStartRenderingFrameListener(listener);
|
||||
}
|
||||
|
||||
@@ -694,7 +694,7 @@ public class MapView extends FrameLayout implements NativeMapView.ViewCallback {
|
||||
*
|
||||
* @param listener The callback that's invoked when the map has finished rendering a frame
|
||||
*/
|
||||
public void addOnDidFinishRenderingFrameListener(OnDidFinishRenderingFrameListener listener) {
|
||||
public void addOnDidFinishRenderingFrameListener(@NonNull OnDidFinishRenderingFrameListener listener) {
|
||||
mapChangeReceiver.addOnDidFinishRenderingFrameListener(listener);
|
||||
}
|
||||
|
||||
@@ -703,7 +703,7 @@ public class MapView extends FrameLayout implements NativeMapView.ViewCallback {
|
||||
*
|
||||
* @param listener The callback that's invoked when the map has finished rendering a frame
|
||||
*/
|
||||
public void removeOnDidFinishRenderingFrameListener(OnDidFinishRenderingFrameListener listener) {
|
||||
public void removeOnDidFinishRenderingFrameListener(@NonNull OnDidFinishRenderingFrameListener listener) {
|
||||
mapChangeReceiver.removeOnDidFinishRenderingFrameListener(listener);
|
||||
}
|
||||
|
||||
@@ -712,7 +712,7 @@ public class MapView extends FrameLayout implements NativeMapView.ViewCallback {
|
||||
*
|
||||
* @param listener The callback that's invoked when the map will start rendering
|
||||
*/
|
||||
public void addOnWillStartRenderingMapListener(OnWillStartRenderingMapListener listener) {
|
||||
public void addOnWillStartRenderingMapListener(@NonNull OnWillStartRenderingMapListener listener) {
|
||||
mapChangeReceiver.addOnWillStartRenderingMapListener(listener);
|
||||
}
|
||||
|
||||
@@ -721,7 +721,7 @@ public class MapView extends FrameLayout implements NativeMapView.ViewCallback {
|
||||
*
|
||||
* @param listener The callback that's invoked when the map will start rendering
|
||||
*/
|
||||
public void removeOnWillStartRenderingMapListener(OnWillStartRenderingMapListener listener) {
|
||||
public void removeOnWillStartRenderingMapListener(@NonNull OnWillStartRenderingMapListener listener) {
|
||||
mapChangeReceiver.removeOnWillStartRenderingMapListener(listener);
|
||||
}
|
||||
|
||||
@@ -730,7 +730,7 @@ public class MapView extends FrameLayout implements NativeMapView.ViewCallback {
|
||||
*
|
||||
* @param listener The callback that's invoked when the map has finished rendering
|
||||
*/
|
||||
public void addOnDidFinishRenderingMapListener(OnDidFinishRenderingMapListener listener) {
|
||||
public void addOnDidFinishRenderingMapListener(@NonNull OnDidFinishRenderingMapListener listener) {
|
||||
mapChangeReceiver.addOnDidFinishRenderingMapListener(listener);
|
||||
}
|
||||
|
||||
@@ -748,7 +748,7 @@ public class MapView extends FrameLayout implements NativeMapView.ViewCallback {
|
||||
*
|
||||
* @param listener The callback that's invoked when the map has entered the idle state.
|
||||
*/
|
||||
public void addOnDidBecomeIdleListener(OnDidBecomeIdleListener listener) {
|
||||
public void addOnDidBecomeIdleListener(@NonNull OnDidBecomeIdleListener listener) {
|
||||
mapChangeReceiver.addOnDidBecomeIdleListener(listener);
|
||||
}
|
||||
|
||||
@@ -757,7 +757,7 @@ public class MapView extends FrameLayout implements NativeMapView.ViewCallback {
|
||||
*
|
||||
* @param listener The callback that's invoked when the map has entered the idle state.
|
||||
*/
|
||||
public void removeOnDidBecomeIdleListener(OnDidBecomeIdleListener listener) {
|
||||
public void removeOnDidBecomeIdleListener(@NonNull OnDidBecomeIdleListener listener) {
|
||||
mapChangeReceiver.removeOnDidBecomeIdleListener(listener);
|
||||
}
|
||||
|
||||
@@ -767,7 +767,7 @@ public class MapView extends FrameLayout implements NativeMapView.ViewCallback {
|
||||
*
|
||||
* @param listener The callback that's invoked when the style has finished loading
|
||||
*/
|
||||
public void addOnDidFinishLoadingStyleListener(OnDidFinishLoadingStyleListener listener) {
|
||||
public void addOnDidFinishLoadingStyleListener(@NonNull OnDidFinishLoadingStyleListener listener) {
|
||||
mapChangeReceiver.addOnDidFinishLoadingStyleListener(listener);
|
||||
}
|
||||
|
||||
@@ -776,7 +776,7 @@ public class MapView extends FrameLayout implements NativeMapView.ViewCallback {
|
||||
*
|
||||
* @param listener The callback that's invoked when the style has finished loading
|
||||
*/
|
||||
public void removeOnDidFinishLoadingStyleListener(OnDidFinishLoadingStyleListener listener) {
|
||||
public void removeOnDidFinishLoadingStyleListener(@NonNull OnDidFinishLoadingStyleListener listener) {
|
||||
mapChangeReceiver.removeOnDidFinishLoadingStyleListener(listener);
|
||||
}
|
||||
|
||||
@@ -785,7 +785,7 @@ public class MapView extends FrameLayout implements NativeMapView.ViewCallback {
|
||||
*
|
||||
* @param listener The callback that's invoked when the source has changed
|
||||
*/
|
||||
public void addOnSourceChangedListener(OnSourceChangedListener listener) {
|
||||
public void addOnSourceChangedListener(@NonNull OnSourceChangedListener listener) {
|
||||
mapChangeReceiver.addOnSourceChangedListener(listener);
|
||||
}
|
||||
|
||||
@@ -794,10 +794,28 @@ public class MapView extends FrameLayout implements NativeMapView.ViewCallback {
|
||||
*
|
||||
* @param listener The callback that's invoked when the source has changed
|
||||
*/
|
||||
public void removeOnSourceChangedListener(OnSourceChangedListener listener) {
|
||||
public void removeOnSourceChangedListener(@NonNull OnSourceChangedListener listener) {
|
||||
mapChangeReceiver.removeOnSourceChangedListener(listener);
|
||||
}
|
||||
|
||||
/**
|
||||
* Set a callback that's invoked when the id of an icon is missing.
|
||||
*
|
||||
* @param listener The callback that's invoked when the id of an icon is missing
|
||||
*/
|
||||
public void addOnStyleImageMissingListener(@NonNull OnStyleImageMissingListener listener) {
|
||||
mapChangeReceiver.addOnStyleImageMissingListener(listener);
|
||||
}
|
||||
|
||||
/**
|
||||
* Set a callback that's invoked when a map source has changed.
|
||||
*
|
||||
* @param listener The callback that's invoked when the source has changed
|
||||
*/
|
||||
public void removeOnStyleImageMissingListener(@NonNull OnStyleImageMissingListener listener) {
|
||||
mapChangeReceiver.removeOnStyleImageMissingListener(listener);
|
||||
}
|
||||
|
||||
/**
|
||||
* Interface definition for a callback to be invoked when the camera will change.
|
||||
* <p>
|
||||
@@ -976,6 +994,21 @@ public class MapView extends FrameLayout implements NativeMapView.ViewCallback {
|
||||
void onSourceChangedListener(String id);
|
||||
}
|
||||
|
||||
/**
|
||||
* Interface definition for a callback to be invoked with the id of a missing icon.
|
||||
* <p>
|
||||
* {@link MapView#addOnStyleImageMissingListener(OnStyleImageMissingListener)}
|
||||
* </p>
|
||||
*/
|
||||
public interface OnStyleImageMissingListener {
|
||||
/**
|
||||
* Called when the map is missing an icon.
|
||||
*
|
||||
* @param id the id of the icon that is missing
|
||||
*/
|
||||
void onStyleImageMissing(@NonNull String id);
|
||||
}
|
||||
|
||||
/**
|
||||
* Sets a callback object which will be triggered when the {@link MapboxMap} instance is ready to be used.
|
||||
*
|
||||
|
||||
@@ -1025,7 +1025,9 @@ final class NativeMapView implements NativeMap {
|
||||
|
||||
@Keep
|
||||
private void onDidBecomeIdle() {
|
||||
stateCallback.onDidBecomeIdle();
|
||||
if (stateCallback != null) {
|
||||
stateCallback.onDidBecomeIdle();
|
||||
}
|
||||
}
|
||||
|
||||
@Keep
|
||||
@@ -1042,6 +1044,14 @@ final class NativeMapView implements NativeMap {
|
||||
}
|
||||
}
|
||||
|
||||
@Keep
|
||||
private void onStyleImageMissing(String imageId) {
|
||||
Logger.e(TAG, "OnStyleImageMissing: " + imageId);
|
||||
if (stateCallback != null) {
|
||||
stateCallback.onStyleImageMissing(imageId);
|
||||
}
|
||||
}
|
||||
|
||||
@Keep
|
||||
protected void onSnapshotReady(@Nullable Bitmap mapContent) {
|
||||
if (checkState("OnSnapshotReady")) {
|
||||
@@ -1473,5 +1483,7 @@ final class NativeMapView implements NativeMap {
|
||||
void onDidBecomeIdle();
|
||||
|
||||
void onSourceChanged(String sourceId);
|
||||
|
||||
void onStyleImageMissing(String imageId);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -9,7 +9,6 @@ import android.support.annotation.Nullable;
|
||||
import android.support.annotation.StringDef;
|
||||
import android.util.DisplayMetrics;
|
||||
import android.util.Pair;
|
||||
|
||||
import com.mapbox.mapboxsdk.constants.MapboxConstants;
|
||||
import com.mapbox.mapboxsdk.style.layers.Layer;
|
||||
import com.mapbox.mapboxsdk.style.layers.TransitionOptions;
|
||||
@@ -324,13 +323,49 @@ public class Style {
|
||||
* @param bitmap the pre-multiplied Bitmap
|
||||
* @param sdf the flag indicating image is an SDF or template image
|
||||
*/
|
||||
public void addImage(@NonNull final String name, @NonNull final Bitmap bitmap, boolean sdf) {
|
||||
public void addImage(@NonNull final String name, @NonNull Bitmap bitmap, boolean sdf) {
|
||||
validateState("addImage");
|
||||
nativeMap.addImages(new Image[]{toImage(new Builder.ImageWrapper(name, bitmap, sdf))});
|
||||
}
|
||||
|
||||
/**
|
||||
* Adds an image asynchronously, to be used in the map's style.
|
||||
*
|
||||
* @param name the name of the image
|
||||
* @param image the pre-multiplied Bitmap
|
||||
*/
|
||||
public void addImageAsync(@NonNull String name, @NonNull Bitmap image) {
|
||||
addImageAsync(name, image, false);
|
||||
}
|
||||
|
||||
/**
|
||||
* Adds an drawable asynchronously, to be converted into a bitmap to be used in the map's style.
|
||||
*
|
||||
* @param name the name of the image
|
||||
* @param drawable the drawable instance to convert
|
||||
*/
|
||||
public void addImageAsync(@NonNull String name, @NonNull Drawable drawable) {
|
||||
Bitmap bitmap = BitmapUtils.getBitmapFromDrawable(drawable);
|
||||
if (bitmap == null) {
|
||||
throw new IllegalArgumentException("Provided drawable couldn't be converted to a Bitmap.");
|
||||
}
|
||||
addImageAsync(name, bitmap, false);
|
||||
}
|
||||
|
||||
/**
|
||||
* Adds an image asynchronously, to be used in the map's style.
|
||||
*
|
||||
* @param name the name of the image
|
||||
* @param bitmap the pre-multiplied Bitmap
|
||||
* @param sdf the flag indicating image is an SDF or template image
|
||||
*/
|
||||
public void addImageAsync(@NonNull final String name, @NonNull Bitmap bitmap, boolean sdf) {
|
||||
validateState("addImage");
|
||||
new BitmapImageConversionTask(nativeMap).execute(new Builder.ImageWrapper(name, bitmap, sdf));
|
||||
}
|
||||
|
||||
/**
|
||||
* Adds an images to be used in the map's style.
|
||||
* Adds images to be used in the map's style.
|
||||
*
|
||||
* @param images the map of images to add
|
||||
*/
|
||||
@@ -339,12 +374,39 @@ public class Style {
|
||||
}
|
||||
|
||||
/**
|
||||
* Adds an images to be used in the map's style.
|
||||
* Adds images to be used in the map's style.
|
||||
*
|
||||
* @param images the map of images to add
|
||||
* @param sdf the flag indicating image is an SDF or template image
|
||||
*/
|
||||
public void addImages(@NonNull HashMap<String, Bitmap> images, boolean sdf) {
|
||||
validateState("addImage");
|
||||
Image[] convertedImages = new Image[images.size()];
|
||||
int index = 0;
|
||||
for (Builder.ImageWrapper imageWrapper : Builder.ImageWrapper.convertToImageArray(images, sdf)) {
|
||||
convertedImages[index] = toImage(imageWrapper);
|
||||
index++;
|
||||
}
|
||||
|
||||
nativeMap.addImages(convertedImages);
|
||||
}
|
||||
|
||||
/**
|
||||
* Adds images asynchronously, to be used in the map's style.
|
||||
*
|
||||
* @param images the map of images to add
|
||||
*/
|
||||
public void addImagesAsync(@NonNull HashMap<String, Bitmap> images) {
|
||||
addImagesAsync(images, false);
|
||||
}
|
||||
|
||||
/**
|
||||
* Adds images asynchronously, to be used in the map's style.
|
||||
*
|
||||
* @param images the map of images to add
|
||||
* @param sdf the flag indicating image is an SDF or template image
|
||||
*/
|
||||
public void addImagesAsync(@NonNull HashMap<String, Bitmap> images, boolean sdf) {
|
||||
validateState("addImages");
|
||||
new BitmapImageConversionTask(nativeMap).execute(Builder.ImageWrapper.convertToImageArray(images, sdf));
|
||||
}
|
||||
@@ -903,7 +965,22 @@ public class Style {
|
||||
}
|
||||
}
|
||||
|
||||
private static class BitmapImageConversionTask extends AsyncTask<Builder.ImageWrapper, Void, List<Image>> {
|
||||
private static Image toImage(Builder.ImageWrapper imageWrapper) {
|
||||
Bitmap bitmap = imageWrapper.bitmap;
|
||||
if (bitmap.getConfig() != Bitmap.Config.ARGB_8888) {
|
||||
bitmap = bitmap.copy(Bitmap.Config.ARGB_8888, false);
|
||||
}
|
||||
|
||||
ByteBuffer buffer = ByteBuffer.allocate(bitmap.getByteCount());
|
||||
bitmap.copyPixelsToBuffer(buffer);
|
||||
float pixelRatio = (float) bitmap.getDensity() / DisplayMetrics.DENSITY_DEFAULT;
|
||||
|
||||
return new Image(buffer.array(), pixelRatio, imageWrapper.id,
|
||||
bitmap.getWidth(), bitmap.getHeight(), imageWrapper.sdf
|
||||
);
|
||||
}
|
||||
|
||||
private static class BitmapImageConversionTask extends AsyncTask<Builder.ImageWrapper, Void, Image[]> {
|
||||
|
||||
private WeakReference<NativeMap> nativeMap;
|
||||
|
||||
@@ -913,39 +990,20 @@ public class Style {
|
||||
|
||||
@NonNull
|
||||
@Override
|
||||
protected List<Image> doInBackground(Builder.ImageWrapper... params) {
|
||||
protected Image[] doInBackground(Builder.ImageWrapper... params) {
|
||||
List<Image> images = new ArrayList<>();
|
||||
ByteBuffer buffer;
|
||||
String name;
|
||||
Bitmap bitmap;
|
||||
boolean sdf;
|
||||
|
||||
for (Builder.ImageWrapper param : params) {
|
||||
name = param.id;
|
||||
bitmap = param.bitmap;
|
||||
sdf = param.sdf;
|
||||
|
||||
if (bitmap.getConfig() != Bitmap.Config.ARGB_8888) {
|
||||
bitmap = bitmap.copy(Bitmap.Config.ARGB_8888, false);
|
||||
}
|
||||
|
||||
buffer = ByteBuffer.allocate(bitmap.getByteCount());
|
||||
bitmap.copyPixelsToBuffer(buffer);
|
||||
|
||||
float pixelRatio = (float) bitmap.getDensity() / DisplayMetrics.DENSITY_DEFAULT;
|
||||
|
||||
images.add(new Image(buffer.array(), pixelRatio, name, bitmap.getWidth(), bitmap.getHeight(), sdf));
|
||||
images.add(toImage(param));
|
||||
}
|
||||
|
||||
return images;
|
||||
return images.toArray(new Image[images.size()]);
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void onPostExecute(@NonNull List<Image> images) {
|
||||
protected void onPostExecute(@NonNull Image[] images) {
|
||||
super.onPostExecute(images);
|
||||
NativeMap nativeMap = this.nativeMap.get();
|
||||
if (nativeMap != null && !nativeMap.isDestroyed()) {
|
||||
nativeMap.addImages(images.toArray(new Image[images.size()]));
|
||||
nativeMap.addImages(images);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user