为啥 Glide 只第二次加载图像? (安卓)

Posted

技术标签:

【中文标题】为啥 Glide 只第二次加载图像? (安卓)【英文标题】:Why Glide loads images only for the second time? (Android)为什么 Glide 只第二次加载图像? (安卓) 【发布时间】:2018-09-28 04:53:25 【问题描述】:

我正在使用适配器来显示配置文件图标列表。我正在使用 glide 来显示图像。但问题是,它会加载默认配置文件,而不是第一次从响应中加载 url。

当我转到上一页并第二次进入该页面时,它会加载 url。

代码:

@Override
public void onBindViewHolder(RetailerStatusViewHolder holder, int position) 

    if(retailerList.getImgUrl()!=null)
      Glide.with(context) 
            .load(retailerList.getImgUrl())
            .placeholder(R.drawable.ic_default_profile)
            .error(R.drawable.ic_default_profile)
            .into(((holder.circleImageView)));
    

我也尝试过给context.getApplicationContext(),但仍然只加载第二次图片

分级:

compile 'com.github.bumptech.glide:glide:3.8.0'

XML:

<com.customviews.CircleImageView
    android:id="@+id/recycle_profile"
    android:layout_
    android:layout_
    android:layout_gravity="center"
    android:layout_marginLeft="16dp"
    android:src="@drawable/ic_default_profile"/>

【问题讨论】:

Glide 需要一些时间从 url 加载图像 Glide 加载图片需要一些时间,而且在循环加载时也会产生问题 ImageView See this link 它会帮助您找出问题。 【参考方案1】:

试试这个:

XML 代码:

<set xmlns:android="http://schemas.android.com/apk/res/android">

<alpha
    android:duration="800"
    android:fromAlpha="0.0"
    android:interpolator="@android:anim/decelerate_interpolator"
    android:toAlpha="1.0"/>

Java 类:

public static void loadImage(final Activity context, ImageView imageView, String url, int placeHolderUrl, int errorImageUrl) 
    if (context == null || context.isDestroyed()) return;

    //placeHolderUrl=R.drawable.ic_user;
    //errorImageUrl=R.drawable.ic_error;
    Glide.with(context) //passing context 
            .load(getFullUrl(url)) //passing your url to load image.
            .placeholder(placeHolderUrl) //this would be your default image (like default profile or logo etc). it would be loaded at initial time and it will replace with your loaded image once glide successfully load image using url.
            .error(errorImageUrl)//in case of any glide exception or not able to download then this image will be appear . if you won't mention this error() then nothing to worry placeHolder image would be remain as it is.
            .diskCacheStrategy(DiskCacheStrategy.ALL) //using to load into cache then second time it will load fast.
            .animate(R.anim.fade_in) // when image (url) will be loaded by glide then this face in animation help to replace url image in the place of placeHolder (default) image.
            .fitCenter()//this method help to fit image into center of your ImageView 
            .into(imageView); //pass imageView reference to appear the image.

在您的活动中添加这一行:

Utils.loadImage(YourClassName.this,mImageView,url,R.drawable.ic_user,R.drawable.ic_error);

在片段中:

Utils.loadImage(getActivity,mImageView,url,R.drawable.ic_user,R.drawable.ic_error);

我觉得对你有帮助

【讨论】:

以上是关于为啥 Glide 只第二次加载图像? (安卓)的主要内容,如果未能解决你的问题,请参考以下文章

推荐5个不错的安卓图片加载库

安卓MediaPlayer 播放网络视频源走了Error监听(原因同 Glide 无法加载Http图片)

安卓 日常问题 工作日志7

为啥 Glide 没有在 android 中加载 https 图像?

安卓直装《脑坏死》第二次修复版

安卓手机上传同一张图片第二次不触发onchange