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

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • Android 自定义View的各种姿势1 Activity的显示之ViewRootImpl详解 Activity...
    passiontim阅读 176,368评论 25 709
  • 在一个 Gradle 项目中在你的 build.gradle中添加下面这行代码: 从一个 URL 中加载图片就像 ...
    A_Coder阅读 6,197评论 0 4
  • 零、前言 本文所使用的Glide版本为3.7.0如果需要使用V4的最新版本请参考Glide V4使用指南 一、简介...
    MrTrying阅读 204,534评论 36 255
  • 有很多人包括我自己在内常常说类似这样的话:我这么优秀,为什么总是其他人能得到我所想要的东西?这种抱怨,在现实...
    还好没有阅读 2,761评论 0 1
  • 初次看到这个题目,是不是很惊讶!不要紧,听我娓娓道来! 10月16日是周一,不到七点二十我就来到了...
    水墨山风王仲波阅读 1,792评论 0 6

友情链接更多精彩内容