如何在滚动时加载一小段延迟在gridview上加载图像?

时间:2016-02-28 23:04:47

标签: android gridview scroll android-image

我使用毕加索和视图模式在我的gridview中加载图像,但是滚动时gridview的加载不够平滑。当我滚动网格视图时,我只能首先加载占位符,当每个图像加载到给定的“页面”时,网格视图会按顺​​序逐个显示图像。毕加索有更好的工具吗?我搜索了解决方案,但我找不到。

1 个答案:

答案 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关联的任何当前图像下载。

此解决方案提供快速滚动(因为使用了本地占位符)。但是,如果滚动不是很快,可能在构建每个视图的逻辑中存在其他问题。