我有一个应用程序,在其中显示报价,并且背景中有图片。当我单击“下一步”按钮时,将显示下一个报价,并加载新图像。加载大约需要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”不能按预期工作,占位符仍然存在。
所以,有人知道如何减少加载时间吗?例如,如何在开始时加载所有图像?
谢谢您的回答!
您可以在使用毕加索时创建缓存,这将缩短加载时间(只要缓存了图像,就可以了
Picasso picasso = new Picasso.Builder(this).downloader(new OkHttpDownloader(getCacheDir(), 250000000)).build();
Picasso.setSingletonInstance(picasso);
您可以使用指示器使用来查看从哪里加载图像
setIndicatorsEnabled(true)
您还可以使用回调来指示图像加载完成的时间
您可以看到更多详细信息here
编辑
您可以使用Picasso.get().load(R.drawable.pic).into(imageview)
我认为它也适用于mipmap,通常mipmap用于错误/资源的占位符(如果您不使用drawables)]]
您可以创建自己的有关如何缓存/加载图像的策略