我在列表视图中使用Picasso在我的应用中,我面临的问题是当我使用Picasso.with(context).load("file:///path/to/image/in/SD").into(imageView)
加载图片时
并滚动listvie,当加载图像时,加载的图像向上或向下推动列表,下面描述了我想说的内容。
item 1
========
item 2
========
item 3
现在让我们说我向上滚动,列表停在第15位
item 15 ///Picasso started loading the image but the image isn't ready yet
========
item 16
========
item 17
item 15 //after few milliseconds the image is loaded into the image view
image view is loaded and pushed the list down
---------
| |
| |
| |
---------
========
item 16
========
item 17
我拥有的图像都在本地保存,其路径在DB中。 Facebook正在非常好地使用灰色图像,然后加载具有灰色占位符相同维度的图像,并根据图像更改占位符。
问题是如何将像黑色或灰色图像这样的占位符放置为与加载完成后将加载的图像尺寸相同的占位符,以便在不推送列表的情况下替换它?
请注意,使用.placeholder()并不好,因为尺寸不会相同。
答案 0 :(得分:0)
您可以更改目标图像视图大小,但为此,您需要在使用picasso开始DL图像之前知道目标大小。它不会自动为你工作。它应该以某种方式知道目标图像大小。如果谈论带有来自互联网的图像的列表,那么通常应用程序在进入DL之前获取有关图像(网址,大小等)的所有必需信息。您的应用程序包含项目资源中的所有图像。因此,为了实现您的目标,您应该使用BitmapFactory
来获取图像大小,然后再将任务加载到毕加索。