Подтвердить что ты не робот

Скольжение, не загружающее реальное изображение и застрявшее с заполнителем

У меня есть довольно базовое изображение загрузки из кода строки сервера:

Glide.with(view.getContext()).load(url).placeholder(R.drawable.default_profile).into(view);

По какой-то причине я всегда застрял в том, что местозаполнитель отображается и никогда не является реальным изображением!

Я убедился, что действительный и рабочий URL-адрес передается. И, если я использую тот же код без заполнителя, он отлично работает

Glide.with(view.getContext()).load(url).into(view);

Любые идеи, почему?

4b9b3361

Ответ 1

попробуйте добавить .dontAnimate() Это вызвано TransitionDrawable тоже, и кажется, что так после прокрутки нет анимации, потому что она кэширована. правильный код

Glide.with(view.getContext()).load(url).placeholder(R.drawable.default_profile).dontAnimate().into(view);

Я надеюсь быть полезным для вас

Ответ 2

Проверьте, добавлено ли в манифесте интернет-разрешение:

<uses-permission android:name="android.permission.INTERNET"/>

Glide не запускает исключение, если нет подключения к Интернету.

Ответ 3

Если кто-то столкнется с этим в будущем, вам может понадобиться добавить

<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/>

Не зная точную причину этого изменения, тем не менее мой код не работал без этого разрешения и теперь делает с ним.

Ответ 4

Использовать ProgressBar для загрузки gif

Glide.with(context).
        load(url)
        .listener(new RequestListener<String, GlideDrawable>() {
            @Override
            public boolean onException(Exception e, String model, Target<GlideDrawable> target, boolean isFirstResource) {
                progressBar.setVisibility(View.GONE);
                return false;
            }

            @Override
            public boolean onResourceReady(GlideDrawable resource, String model, Target<GlideDrawable> target, boolean isFromMemoryCache, boolean isFirstResource) {
                progressBar.setVisibility(View.GONE);
                return false;
            }
        })
        .crossFade(1000)
        .into(imageView);

Ответ 5

Ниже приведено странное исправление, которое сработало для меня.

Следующее всегда терпит неудачу для меня (12 испытаний) - я никогда не вижу реального изображения:

Glide.with(context)
 .load(url)
 .asBitmap()
 .into(new SimpleTarget<Bitmap>(iconWidth, iconHeight) { ... }

Мне всегда удается следующее (12 испытаний) - я всегда вижу реальный образ:

Glide.with(context)
 .load(url)
 .asBitmap()
 .listener(new RequestListener() {
    public boolean onException(Exception e,Object o,Target t,boolean b)
               {return false;}
    public boolean onResourceReady(Object o,Object p,Target t,boolean b,boolean c)  
               {return false;}})
 .into(new SimpleTarget<Bitmap>(iconWidth, iconHeight) { ... }

Как видите, единственное отличие здесь в том, что я добавил слушателя. Не имеет большого смысла, но эти испытания были сделаны довольно осторожно, так что я пойду с этим.

Ответ 6

Не используйте переход или анимацию для Glide. Это решит вашу проблему

Код:

Glide.with(context)
    .load(horizontalHappyHourList.get(position).getImage())
//  .transition(DrawableTransitionOptions.withCrossFade(400)) //Optional
    .apply(RequestOptions.diskCacheStrategyOf(DiskCacheStrategy.RESOURCE)
    .error(R.drawable.no_image))
    .into(holder.imageView);

Ответ 7

Кажется странным, но единственное, что я мог догадаться, - это ваш URL-адрес, как вы уже сказали. Ваш пульт загружается, даже прикладываясь к вашему изображению, но ваш заполнитель каким-то образом скрывает его. У Glide есть некоторые ошибки, связанные с материалом-заполнителем.

Мое предложение было бы попробовать ниже:

Glide.with(view.getContext()).load(url).
placeholder(R.drawable.default_profile).fitCenter().into(view);

Итак, трюк заполнитель устанавливается с помощью setImageDrawable() так ImageView будет просто показать его, как обычно, но вы говорите Glide использовать <Т23 > явно, который будет соответствовать загруженное изображение красиво в ImageView заложен используя Transformation, а затем установите его через setImageDrawable(). Так как установленное изображение идеально подходит, центр просто рисует изображение, охватывающее всю область обзора.

Попробуйте.

Ответ 8

Ни одно из приведенных выше решений не помогло мне. Возможно, проблема в заполнителе, который вы используете. Если представление, которое вы используете для загрузки изображения, имеет заполнитель, это вызывает некоторые проблемы. Удаление этого заполнителя по некоторым причинам, кажется, исправит это.

Итак, если представление (изображение), которое вы пытаетесь накачать, имеет заполнитель, например android: src= "@mipmap/placeholder", удалите его.

        <ImageView
            android:id="@+id/imgGallery"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:layout_centerHorizontal="true"
            android:adjustViewBounds="true"
            android:scaleType="centerCrop"
            android:src="@mipmap/rugova1" />

как это

 <ImageView
            android:id="@+id/imgGallery"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:layout_centerHorizontal="true"
            android:adjustViewBounds="true"
            android:scaleType="centerCrop"
            />

Это сработало для меня.