如何用毕加索保存图像,从而没有加载时间?

问题描述 投票:0回答:1

我有一个应用程序,在其中显示报价,并且背景中有图片。当我单击“下一步”按钮时,将显示下一个报价,并加载新图像。加载大约需要0.5秒,并且图像之前已用作占位符。但是当我切换回去时,没有加载时间。

这意味着,图像被保存在某处,因此无需再次加载。不幸的是,这只是暂时的。当我看到接下来的5张图片并返回到第一张图片时,需要再次加载第一张图片。因此,我尝试在开始时加载所有图片(仅25张图片),如下所示:

Picasso.get().load(backgrounds.get(1));
Picasso.get().load(backgrounds.get(2));
Picasso.get().load(backgrounds.get(3));
Picasso.get().load(backgrounds.get(4));
Picasso.get().load(backgrounds.get(5));
Picasso.get().load(backgrounds.get(6));
Picasso.get().load(backgrounds.get(7));

并且当我单击“下一步”按钮时,我将使用此按钮:

Picasso.get().load(backgrounds.get(counterBackground)).fit().noPlaceholder().into(background);

但是两件事都没有预期的效果。图像每次需要大约0.5的加载时间,并且“ noPlaceholder”不能按预期工作,占位符仍然存在。

所以,有人知道如何减少加载时间吗?例如,如何在开始时加载所有图像?

谢谢您的回答!

java android performance picasso
1个回答
1
投票

您可以在使用毕加索时创建缓存,这将缩短加载时间(只要缓存了图像,就可以了

Picasso picasso =  new Picasso.Builder(this).downloader(new OkHttpDownloader(getCacheDir(), 250000000)).build();
Picasso.setSingletonInstance(picasso);

source

您可以使用指示器使用来查看从哪里加载图像

setIndicatorsEnabled(true)

source

您还可以使用回调来指示图像加载完成的时间

您可以看到更多详细信息here

编辑

  1. 您可以使用Picasso.get().load(R.drawable.pic).into(imageview)我认为它也适用于mipmap,通常mipmap用于错误/资源的占位符(如果您不使用drawables)]]

    2。
  2. 您可以创建自己的有关如何缓存/加载图像的策略

Link

© www.soinside.com 2019 - 2024. All rights reserved.