【发布时间】:2017-06-27 04:21:16
【问题描述】:
我正在寻找一种我可以使用的设计模式,以便在 android recyclerView 中以低质量快速加载图像,然后调用高质量图像将 之后改写低质量的图像。我经常看到先加载低质量图像然后再加载高质量图像的情况。
但是这是如何在回收器视图的适配器中完成的。现在我正在使用 picasso 进行缓存和图像加载。所以例如这里是一个低质量图像的链接:
http://example.com/lowQuality.jpg 和同样高质量的http://example.com/highQuality.jpg
如果我在视图中执行此操作,那么在我的 recyclerView 适配器中:
public class SearchItemHolder extends RecyclerView.ViewHolder {
@BindView(R.id.iv)
ImageView iv;
@BindView(R.id.tv_description)
TextView tv_description;
public SearchItemHolder(View view) {
super(view);
ButterKnife.bind(this, view);
}
public void bindSearch(final SearchModel searchModel) {
String description = searchModel.getProductName();
final String imageLowQualityIDUrl = searchModel.getIdLowQualityImage();
final String imageHighQualityIDUrl = searchModel.getIdHighQualityImage();
tv_price.setText(price);
tv_description.setText(description);
Picasso.with(mContext).load(imageLowQualityIDUrl).into(iv);
//but how to switch it to high quality URL after its finished loading ?
}
}
为了清楚起见,我希望只要尚未加载高质量图像,就可以首先显示低质量图像。
更新:我真正想要的是我在应用程序上看到的效果,其中低质量的图像加载速度很快,然后在几秒钟后它转换为更高的质量。如果有其他工具或方法可以做到这一点,请告诉我。我想要与 whatsapp 个人资料图像相同的效果(它如何从劣质变为优质)。
【问题讨论】:
-
你的意思是有两个版本的图片,低质量和高质量然后你想先加载低质量,然后再加载高质量?
-
你为什么不先尝试加载高质量,然后调整为低质量。如果您使用这种设计模式,假设这两个图像分别为 45kb 和 90kb,如果加载一次,则调整 90kb 的数据大小,如果加载两次,则为 135kb 的两个图像。
-
我真正想要的是我在应用程序上看到的效果,其中低质量图像加载速度很快,然后在几秒钟后它转换为更高质量
-
我发布了一个可能的答案,如果它适合你,请告诉我
-
我明白了你的想法!我对此也很感兴趣。我喜欢 Flickr 的 android 应用程序这样做的方式。首先,Feed 中加载了低图像,经过一段时间的延迟后,只有当前可见的图片以更高分辨率更新。如果您愿意,我们可以配合这次调查以获得更好的结果))
标签: image android-recyclerview image-loading progressive-download