我使用毕加索和视图模式在我的gridview中加载图像,但是滚动时gridview的加载不够平滑。当我滚动网格视图时,我只能首先加载占位符,当每个图像加载到给定的“页面”时,网格视图会按顺序逐个显示图像。毕加索有更好的工具吗?我搜索了解决方案,但我找不到。
答案 0 :(得分:0)
不确定,是否可以等到每个图像都加载到给定页面上。然而,在我的一个宠物"项目我实现了逻辑 - 显示占位符,加载图像时显示实际图像(但不是当页面上的所有图像时,它分别与每个图像一起工作)。要使用Picasso加载图像,我使用了下一个代码:
private def prepareImageView(image: ImageView,
course: Course) = {
Picasso.`with`(context).cancelTag(image)
image.setImageResource(R.drawable.img_session_placeholder)
Picasso.`with`(context)
.load(course.imgUri)
.tag(image)
.into(new Target {
override def onBitmapFailed(errorDrawable: Drawable): Unit = {}
override def onPrepareLoad(placeHolderDrawable: Drawable): Unit = {}
override def onBitmapLoaded(bitmap: Bitmap, from: LoadedFrom): Unit = {
image.setImageBitmap(bitmap)
image.invalidate
}
}
}
代码在Scala中,但我不认为将它转换为Java会有任何问题。首先,我将占位符图像设置为imageView,以便用户看到占位符(R.drawable.img_session_placeholder),之后Picasso会在下载后立即用真实图像更新它。另外,请不要忘记取消与当前ImageView关联的任何当前图像下载。
此解决方案提供快速滚动(因为使用了本地占位符)。但是,如果滚动不是很快,可能在构建每个视图的逻辑中存在其他问题。