Android毕加索将先前加载的图像设置为占位符

Android毕加索将先前加载的图像设置为占位符,android,kotlin,picasso,Android,Kotlin,Picasso,我正在使用毕加索加载图像的较小质量版本,如果用户在列表中单击该图像,则新的活动将打开,我将在其中显示同样使用毕加索的图像的完整质量版本 问题是图像的全质量版本很大,所以加载它需要一些时间 我想在此期间,以前加载的图像质量较小的版本显示。毕加索会立即展示它,因为它已经载入了之前的活动中 我曾两次尝试通过调用毕加索方法来实现它,如下所示: Picasso.get().load(url_small_quality).into(imageView) Picasso.get().load(url_full

我正在使用
毕加索
加载图像的较小质量版本,如果用户在列表中单击该图像,则新的
活动
将打开,我将在其中显示同样使用
毕加索
的图像的完整质量版本

问题是图像的全质量版本很大,所以加载它需要一些时间

我想在此期间,以前加载的图像质量较小的版本显示。毕加索会立即展示它,因为它已经载入了之前的活动中

我曾两次尝试通过调用毕加索方法来实现它,如下所示:

Picasso.get().load(url_small_quality).into(imageView)
Picasso.get().load(url_full_quality).into(imageView)
但是我认为它跳过了
load(url\u small\u quality)
,因为
imageView
url\u full\u quality
加载之前会有一段时间是空的

我试着只运行
load(url\u small\u quality)
,然后图像会立即加载,因为它以前是加载和存储的


有没有办法将以前加载的较小质量的图像设置为占位符,直到加载完整质量的图像?

很可能毕加索正在取消您以前的请求,您可以尝试此方法

 Picasso.get().load(url_small_quality).into(imageView,object:Callback{
            override fun onSuccess() {
                Picasso.get().load(url_full_quality).into(imageView)
            }

            override fun onError(e: Exception?) {
              
            }

        })
  • 您可以将可绘制图像用作占位符,但这将是默认图像

        Picasso.get().load("http://i.imgur.com/DvpvklR.png").into(imageView);
    
  • 您可以在成功加载低质量映像(如下所示)后加载高质量映像(因为没有直接的方法来实现这一点或其他目的,可以使用磁盘缓存,但这需要付出更多的努力):-


  • 正如Asha Garg在评论中所说,这是不可能做到的:

    Picasso.get().load(url_small_quality).into(imageView)
    Picasso.get().load(url_full_quality).into(imageView)
    
    只需再创建一个imageview,然后用拇指将其放在上一个imageview的上方,然后在那里加载高分辨率图像

    Java:

    Picasso.get().load(url_small_quality).into(IVThumb, new Callback() {
        @Override
        public void onSuccess() {
            Picasso.get().load(url_full_quality).into(IVFull, new Callback() {
                @Override
                public void onSuccess() {
    
                }
                @Override
                public void onError(Exception e) {
    
                }
            });
        }
        @Override
        public void onError(Exception e) {
    
        }
    });
    
    xml:

    Picasso.get().load(url_small_quality).into(IVThumb, new Callback() {
        @Override
        public void onSuccess() {
            Picasso.get().load(url_full_quality).into(IVFull, new Callback() {
                @Override
                public void onSuccess() {
    
                }
                @Override
                public void onError(Exception e) {
    
                }
            });
        }
        @Override
        public void onError(Exception e) {
    
        }
    });
    
    内部线性布局创建:

    <ImageView
        android:id="@+id/IVThumb"
        android:layout_width="match_parent"
        android:layout_height="match_parent" />
    <ImageView
        android:id="@+id/IVFull"
        android:layout_width="match_parent"
        android:layout_height="match_parent" />
    
    
    
    对同一id调用into()将取消上一个请求(),这就是为什么您无法在加载高质量图像之前加载低质量图像。请检查并告诉我是否在脱机模式下将图像(显示小质量的图像)加载到列表中?您的问题是否已解决?问题尚未解决,我尝试了您的答案和注释,但它不起作用。谢谢,但没有
    onSuccess()
    方法。有一个
    onBitmapLoaded
    方法,我在那里尝试过。首先,我将低质量图像设置为
    ImageView
    ,然后加载高质量图像。但结果是一样的,低质量的图像没有显示,在高质量的图像加载之前,屏幕是空白的。。小url质量的url在您的列表页面上工作正常吗?如果启用小url的缓存,然后在全屏页面上重新使用该缓存,会怎么样?尝试了这个,但没有工作