Невозможно загрузить растровое изображение с помощью Glide v4 - PullRequest
0 голосов
/ 28 октября 2018

Я использую Glide v4 для загрузки растрового изображения, которое затем можно использовать в качестве маркера на карте.Когда я использую устаревший SimpleTarget вроде, все работает нормально.

GlideApp.with(getContext()).asBitmap().load(url)
    .into(new SimpleTarget<Bitmap>() {
        @Override
        public void onResourceReady(@NonNull Bitmap resource, @Nullable Transition<? super Bitmap> transition) {

            // load bitmap as marker
        }
    });

Когда я пытаюсь удалить устаревший код и использовать Target<Bitmap>, как указано ниже, я вижу, что вызывается onLoadStarted, но onResourceReady никогда не вызывается и не onLoadFailed.

GlideApp.with(getContext()).asBitmap()
    .load(UrlHelper.createUrl(poi.getMapMarker()))
    .into(marketBitmap);

private Target<Bitmap> marketBitmap = new Target<Bitmap>() {
    @Override
    public void onLoadStarted(@Nullable Drawable placeholder) {
        Log.d("GlideMar", "marker load started");
    }

    @Override
    public void onLoadFailed(@Nullable Drawable errorDrawable) {
        Log.e("GlideMar", "marker load failed");
    }

    @Override
    public void onResourceReady(@NonNull Bitmap resource, @Nullable Transition<? super Bitmap> transition) {
        Log.d("GlideMar", "onResourceReady");
    }

    @Override
    public void onLoadCleared(@Nullable Drawable placeholder) {
        Log.d("GlideMar", "marker onLoadCleared");
    }

    @Override
    public void getSize(@NonNull SizeReadyCallback cb) {

    }

    @Override
    public void removeCallback(@NonNull SizeReadyCallback cb) {

    }

    @Override
    public void setRequest(@Nullable Request request) {

    }

    @Nullable
    @Override
    public Request getRequest() {
        return null;
    }

    @Override
    public void onStart() {
        Log.d("GlideMar", "marker onStart");
    }

    @Override
    public void onStop() {
        Log.d("GlideMar", "marker onStop");
    }

    @Override
    public void onDestroy() {
        Log.d("GlideMar", "marker onDestroy");
    }
};

1 Ответ

0 голосов
/ 29 октября 2018

Из Скольжение пользовательских целей документация.

Если вы используете пользовательскую цель и не загружаете в представление, которое позволит вам создать подкласс ViewTarget, выВам нужно будет реализовать метод getSize ().

Так что в вашем случае просто поместите приведенный ниже код в getSize метод

@Override
public void getSize(SizeReadyCallback cb) {
    cb.onSizeReady(Target.SIZE_ORIGINAL, Target.SIZE_ORIGINAL);
}

Теперь метод onResourceReady будетвызываться при запуске приложения.

...