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

一、简介

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

二、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,你可以为其应用不同的转换,等等

推荐阅读更多精彩内容

  • Android 自定义View的各种姿势1 Activity的显示之ViewRootImpl详解 Activity...
    passiontim阅读 135,504评论 17 574
  • 目录 简介 Glide是面向Android的快速高效的开源媒体管理和图像加载框架,将媒体解码,内存和磁盘缓存以及资...
    慕涵盛华阅读 2,591评论 3 17
  • 在一个 Gradle 项目中在你的 build.gradle中添加下面这行代码: 从一个 URL 中加载图片就像 ...
    A_Coder阅读 1,298评论 0 5
  • 零、前言 本文所使用的Glide版本为3.7.0如果需要使用V4的最新版本请参考Glide V4使用指南 一、简介...
    MrTrying阅读 158,268评论 44 221
  • 有很多人包括我自己在内常常说类似这样的话:我这么优秀,为什么总是其他人能得到我所想要的东西?这种抱怨,在现实...
    还好没有阅读 41评论 0 1