美文网首页
Glide图片加载库

Glide图片加载库

作者: 郑在学_blog | 来源:发表于2017-10-18 11:05 被阅读0次

    简介

    作为Glide是谷歌推荐的图片加载库,Glide有着 支持video,Gif,SVG格式,同时有着很好的生命周期管理,支持Volley,OkHttp,更好的内存管理策略等优点。
    重用Listview的使用自动处理请求的取消。
    正确加载图片到对应的Imageview。
    自动减少图片尺寸,可以省时间,省内存。
    Glide自己会做异步处理,所以加载的方法卸载UI 线程中。
    Glide和Picasso非常相似,Glide加载图片的方法和Picasso如出一辙。各自有各自的优点,使用时候主要是看需求。想知道他们有哪些区别可以看Google推荐的图片加载库Glide介绍

    Glide使用总结

    1.加载网络图片
    imageView = (ImageView) findViewById( R.id.image );
    String url = "http://img5.jpg" ;
    Glide.with( this ).load( url ).into( imageView ) ; 
    

    . Glide.with() 作为生命周期控制,可以有一下参数:

    with(Context context). 使用Application上下文,Glide请求将不受Activity/Fragment生命周期控制。
    with(Activity activity). 使用Activity作为上下文,Glide的请求会受到Activity生命周期控制。
    with(FragmentActivity activity).Glide的请求会受到FragmentActivity生命周期控制。
    with(android.app.Fragment fragment).Glide的请求会受到Fragment 生命周期控制。
    with(android.support.v4.app.Fragment fragment).Glide的请求会受到Fragment生命周期控制。

    load可以接受一下参数:

    605655-20160607154427996-1293585156.png

    into很好理解 就是放进指定的ImageView中去。

    2.优先级加载设置 priority()
    Glide.with( this).load( url2).priority(Priority.LOW ).into( imageView2 ) ;
    Glide.with( this).load( url3).priority(Priority.HIGH ).into( imageView3 ) ;
    

    有这几种优先级,Priority.LOW、Priority. NORMAL、 Priority.HIGH、Priority.IMMEDIATE

    但是这里的优先级只是在加载的过程中起一个参考作用, 并不决定真正的加载顺序。因为还受网络情况的影响。

    3.缩略图的支持

    1) 先加载原图的十分之一大小的缩略图,然后再加载原图

    Glide.with( thi ).load( url ).thumbnail(0.1f).into( imageview ) ;
    

    2) 用本地的图片作为缩略图,然后再加载原图

    DrawableRequestBuilder<Integer> thumbnailRequest = Glide
            .with(context)
            .load(R.drawable.image_example);
    Glide.with(context)
            .load(url)
            .thumbnail(thumbnailRequest)
            .into(view);
    
    4.加载GIF图
    Glide.with( this ).load( url ).into( imageView1 ) ;
    Glide.with( this ).load( url ).asGif().into( imageView2 ) ;
    

    设置了asGif()后传入的图片必须是Gif不然会报错,如果吧asGif换成asBitmap可则会显示一张静态图。

    5.加载本地视频,相当于一张缩略图
    imageView = (ImageView) findViewById( R.id.image_video );
    String files = Environment.getExternalStorageDirectory().getAbsolutePath() + "/yueyu.mkv" ;
    Glide.with( this ).load( files ).into( imageView ) ;
    

    1) 只能加载本地视频,网络视频无法加载。
    2) 加载本地视频显示只是视频的第一帧图像,相当于一张缩略图。不能播放视频。

    6.加载动画

    .crossFade() 淡入淡出 , 也是默认动画
    .crossFade( int duration ) 定义淡入淡出的时间间隔
    .dontAnimate() 不使用任何动画

    7.Glide缓存策略

    Glide默认开启磁盘缓存和内存缓存,当然也可以对单张图片进行设置特定的缓存策略。
    设置图片不加入到内存缓存
    .skipMemoryCache( true )
    .diskCacheStrategy( DiskCacheStrategy.NONE )
    Glide支持多种磁盘缓存策略:

    DiskCacheStrategy.NONE :不缓存图片
    DiskCacheStrategy.SOURCE :缓存图片源文件
    DiskCacheStrategy.RESULT:缓存修改过的图片
    DiskCacheStrategy.ALL:缓存所有的图片,默认

    8.图片的缩放

    1)使用centerCrop是利用图片图填充ImageView设置的大小,如果ImageView的Height是match_parent则图片就会被拉伸填充

    Glide.with(context).load(imageUrl).centerCrop().into(imageView);
    

    2)使用fitCenter即缩放图像让图像都测量出来等于或小于 ImageView 的边界范围,该图像将会完全显示,但可能不会填满整个ImageView。

    Glide.with(context).load(imageUrl).fitCenter().into(imageView);
    

    3)使用override(horizontalSize, verticalSize)
    与Picasso相比,Glide在内存消耗上更高效、更智能。Glide会根据所剩的内存和ImageView的大小自动限制图片的尺寸。Picasso也有相似的特性,但是它需要手动调用.fit(),对于Glide而言,如果某些图片不应该被自动调整,那么执行override(horizontalSize, verticalSize),那么这个图片会在显示到ImageView之前被调整为需要的尺寸。

    Glide.with(context).load(imageUrl).override(600, 200) .into(imageView);
    //按照这个像素,调整图片的尺寸,不保持长宽比例
    
    8.占位图placeHolder()方法
    Glide.with(context).load(imageUrl)
    .placeholder(R.mipmap.ic_launcher).into(imageView);
    
    9.当加载图片失败时,通过该方法设置加载失败后的图片显示
    Glide.with(context).load(imageUrl).error(R.mipmap.ic_launcher).into(imageView);
    

    10.Glide.with(context).resumeRequests()和 Glide.with(context).pauseRequests()

    当列表在滑动的时候,调用pauseRequests()取消请求,滑动停止时,调用resumeRequests()恢复请求。这样是不是会好些呢?

    11.Glide.clear()

    当你想清除掉所有的图片加载请求时,这个方法可以帮助到你。

    12.设置CircleImageVIew可以使用这个ImageView库
    参考文章 :Android图片加载框架Glide用法里面有加载圆角图片和圆形图片的方法。

    相关文章

      网友评论

          本文标题:Glide图片加载库

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