Glide系列(三)------缩略图

作者: 唠嗑008 | 来源:发表于2017-03-22 17:26 被阅读99次
一、简介

缩略图不同于占位符,占位符必须附带应用程序捆绑的资源才行。缩略图是动态占位符。它也可以从网络中加载。缩略图将会在实际请求加载完或者处理完之后才显示。不管任何原因,在原始图像到达之后,缩略图不会取代原始图像。它只会被抹除。提示:另外一个很好的流畅加载图片过程的方式是用色彩图像占位符的图像背景的主色彩作为图像。

二、Glide 为缩略图提供2个不同的方式。

1、第一个是简单的选择,在原始图像被用过之后,这只需要一个较小的分辨率。这个方法在 ListView或者RecyclerView的组合和详情页中是非常有用的。
这么说吧,在缩略图中像素是250x250,图像将在详细视图中需要一个更大的分辨率图像。然而,从用户的角度来看,他已经看到缩略图,为什么在详情页中出现一个占位符显示了几秒,然后相同图像又再次一次显示(高分辨率的)?
继续显示这张 250x250 像素版本的图像在详情视图上,并且后台去加载全分辨率的图像,这样可以先看到一个不清晰的图像,等加载完成后,看到。Glide 的 .thumbnail() 方法让这一切成为可能。 在这样的情况下,这个参数是一个 float 作为其大小的倍数。

Glide .with( context )
      .load( imgUrl ) 
      .thumbnail( 0.1f )
      .into( imageView2 );

例如, 你传了一个 0.1f 作为参数,Glide 将会显示原始图像的10%的大小。如果原始图像有 1000x1000 像素,那么缩略图将会有 100x100 像素。因为这个图像将会明显比 ImageView 小很多,你需要确保它的 ScaleType 的设置是正确的。
请注意,将应用于演示请求的所有请求设置也应用于缩略图。比如,如果你使用了一个变换去做了一个图像灰度。这同样将发生在缩略图中。

三、缩略图进阶——用完全不同的请求

然而用 float 参数来使用 .thumbnail() 是易于设置且非常有效,但它不总是有意义的。如果缩略图是要通过网络去加载相同的全分辨率的图像,则可能不会很快。所以,Glide 提供了另一个选项去加载和显示缩略图。
第二个选择是传一个完全新的 Glide 请求作为参数。让我们来看看实例:

private void loadImageThumbnailRequest() { 
// setup Glide request without the into() method 
DrawableRequestBuilder<String> thumbnailRequest = Glide .with( context ) 
.load( imageView);

 // pass the request as a a parameter to the thumbnail request 
Glide .with( context )
 .load( imgUrl )
 .thumbnail( thumbnailRequest ) 
.into( imageView);}

所不同的是,第一个缩略图请求是完全独立于第二个原始请求的。该缩略图可以是不同的资源或图片 URL,你可以为其应用不同的转换,等等

相关文章

网友评论

    本文标题:Glide系列(三)------缩略图

    本文链接:https://www.haomeiwen.com/subject/itaonttx.html