我正在使用Picasso将图像加载到ListView单元格中,并且当前使用占位符图像。所以,当用户向下滚动时,ImageView中的占位符图像被替换为需要在那里的真实图像(来自URL)。然而,加载真实图像/替换占位符图像的过程不会发生,直到单元处于屏幕的视野中,这意味着用户不断看到占位符图像变为真实图像。有没有办法让这个过程在屏幕外完成,以便用户不会看到并获得更好的用户体验?在行可见之前让毕加索加载图像
回答
您可以使用fetch()方法热身缓存
Picasso.with(context).load(urlToPrefetch).fetch();
注意,这恰恰是最努力的基础。根据您的配置,缓存可能会在您确实需要之前删除,即使存在磁盘缓存,Picasso也会显示占位符,直到它处理映像(尽管它必须比使用远程服务器加载映像时更快完成)。
你有这样的例子。我目前正在使用这样的东西加载它:Picasso.with(parentFragment.getActivity()) .load(category.getCategoryIconUrl()) .placeholder(R.drawable.placeholder_icon) .into(viewHolder.categoryIcon); –
但是您的示例不会a)指定占位符图像或b)将获取的图像加载到的图像视图。 –
是的,所以这是“让毕加索在行之前加载图像可见”的答案。 您可以预先调用fetch()方法(例如,甚至在用户显示listview之前)。图像加载到缓存中,然后在适配器的onGetView方法中,您将调用相同的 Picasso.with(parentFragment.getActivity()).load(category.getCategoryIconUrl()).placeholder(R.drawable.placeholder_icon).into( viewHolder.categoryIcon); 然后,下载HTTP客户端不需要发出网络请求,而只需从缓存中读取,这样您就可以缩短显示占位符的时间 – Kazuki
- 1. 毕加索图像加载以前缓存图像
- 2. 实施毕加索不加载图像
- 3. 毕加索图像未加载Gridview Android
- 4. 回收毕加索图像加载器
- 5. 加载图像与毕加索
- 6. 毕加索图像未在第一次运行时加载
- 7. 在使控件可见之前在PictureBox中加载图像
- 8. 毕加索下载随机图像
- 9. 毕加索图像重新加载滚动在列表视图
- 10. 毕加索重复图像
- 11. 在ImageViews中加载毕加索的图像在GridLayout中溢出?
- 12. 通用图像加载器和毕加索不加载一些图像的URL
- 13. 毕加索仅在BaseAdapter中加载一个图像
- 14. 加载图像失败,毕加索在Android 7.1
- 15. 毕加索在第一次来电时不会加载图像
- 16. 毕加索不加载更新的图像从Web在Android
- 17. 加载位图与毕加索到ImageView
- 18. 毕加索图片未加载
- 19. 图片懒加载与毕加索
- 20. 从毕加索添加图像到Gridview
- 21. 毕加索:图像不在5.1.1中加载,但在4.2.1中加载
- 22. 毕加索加载图像的三角形在图像的角落
- 23. 无法加载包含%url的图像与毕加索
- 24. 毕加索 - 加载图像到适配器
- 25. 使用磁盘上的毕加索加载图像
- 26. 毕加索将图像加载到目标中
- 27. 图像未使用UIL,凌空或毕加索加载
- 28. 加载毕加索的图像并不总是显示
- 29. 离线时使用SSL加载毕加索图像
- 30. 毕加索使用自己的图像加载目标很慢
你需要找到一种方法来在列表视图中看到更多的视图 –
你会怎么做呢?据我所知,ListView并不具备与ViewPager相同的功能,您可以在其中实际定义左右刷卡的离线视图数量。 –
我认为这个问题的标题有点不准确。我在下面的答案解决了如何“让毕加索在行可见之前加载图像”,但看起来您真正想知道的是“如何在可见之前准备列表项视图”。我不知道ListView是否可能。您可能想要使用RecyclerView,而不是http://developer.android.com/reference/android/support/v7/widget/RecyclerView.html – Kazuki