2017-01-18 55 views
0

我试图在RecyclerView中将图像(每个大约5mb)加载到大小为45x45 dp的ImageView中。尽管原始图像很大,但是由于目标ImageView很小,所以不会加载它的较小版本?所以,我希望Glide能够在几秒钟内以平均上网速度加载图片。但是,这需要20秒。问题是什么?Glide在显示大图像之前需要很长时间

图像存储在firebase存储中。

滑翔代码:

Glide.with(context).load(firebaseStorageUrl).into(imageView); 

回答

0

滑翔需要从互联网加载完整的图像才可以调整它的大小。所以第一次下载需要很长时间。之后,如果您启用了缓存,它可以使用创建的cahe中的小图像。

+0

因此,服务器中的图像文件大于1MB是错误的? – user6650650

+0

这实际上取决于你打算如何处理它们。如果您不需要高分辨率,请不要存储它。但是,如果您需要高分辨率版本的其他内容,您还应该在其他文件夹中添加小版本或使用像“thumb_”这样的前缀 –

0

如果你不想加载较小的文件,我建议使用一个Gif-drawable库从Glide加载到GifDrawable(作为一个ImageView)的大图像。

它可以非常快速地加载超过100MB的文件。它也适用于普通的JPG,PNG和BMP。如果这些是GIF,它会毫不迟延地播放或冻结。

如果android:src和/或android:background声明的drawables是GIF文件,那么它们将被自动识别为GifDrawables并生成动画。如果给出的drawable不是GIF,那么视图像普通的ImageView和ImageButton一样工作。

0

Glide首先下载图像,然后您有方法检索图像作为位图调整和压缩图像。但是,这不会解决您的问题。可能有两种解决方案:

  1. 在服务器中保留一个小尺寸的图像。
  2. 使用文件下载器库,它有助于以串行方式和异步方式将图像作为队列下载,这有助于快速下载文件。对于此库,FileDownloader库是一个不错的选择。
相关问题