Android图片处理框架之Glide学习使用

来源:互联网 发布:ios屏蔽广告软件 编辑:程序博客网 时间:2024/06/04 23:37

一、概述
1、介绍
在泰国举行的谷歌开发者论坛上,谷歌为我们介绍了一个名叫 Glide 的图片加载库,作者是bumptech。这个库被广泛的运用在google的开源项目中,包括2014年google I/O大会上发布的官方app。
2、Glide特点
- 使用简单
- 可配置度高,自适应程度高
- 支持常见图片格式 Jpg png gif webp
- 支持多种数据源 网络、本地、资源、Assets 等
- 高效缓存策略 支持Memory和Disk图片缓存 默认Bitmap格式采用RGB_565内存使用至少减少一半
- 生命周期集成 根据Activity/Fragment生命周期自动管理请求
- 高效处理Bitmap 使用Bitmap Pool使Bitmap复用,主动调用recycle回收需要回收的Bitmap,减小系统回收压力。
3、使用场景
- 处理GIF图片;
-处理图 片时性能要求比较高(缓存 & 加载速度)
4、官方参考:
https://github.com/bumptech/glide
二、使用Glide处理图片
1、依赖库

1)依赖Glide库

compile 'com.github.bumptech.glide:glide:3.7.0'

2)如果你的项目没有support-v4库,还需要添加support-v4依赖。

 compile 'com.android.support:support-v4:23.3.0'

3)如果对图片进行变换处理需要依赖库:

 compile 'jp.wasabeef:glide-transformations:2.0.1'

2、基本使用:

 Glide.with(context)                .load(url)                .placeholder(R.mipmap.ic_launcher) //占位图                .error(R.mipmap.ic_launcher)  //出错的占位图                .override(width, height) //图片显示的分辨率 ,像素值 可以转化为DP再设置                .animate(R.anim.glide_anim)//添加动画效果                .centerCrop()                .fitCenter()                .into(holder.image);

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

3、各种使用方式整理
Glide基本可以load任何可以拿到的媒体资源。

 //(1)加载网络图片        tvGlide1.setText("(1)加载网络图片");        Glide.with(this).load("http://img.tupianzj.com/uploads/allimg/160726/9-160H6110H0.jpg").into(ivGlide1);        //(2)加载资源图片        tvGlide2.setText("(2)加载资源图片");        Glide.with(this).load(R.drawable.m5).into(ivGlide2);        //(3)加载本地图片        tvGlide3.setText("(3)加载本地图片");        String path = Environment.getExternalStorageDirectory() + "/meinv1.jpg";        File file = new File(path);        Uri uri = Uri.fromFile(file);        Glide.with(this).load(uri).placeholder(R.mipmap.ic_launcher).into(ivGlide3);        // (4)加载网络gif        tvGlide4.setText("(4)加载网络gif");        String gifUrl = "http://b.hiphotos.baidu.com/zhidao/pic/item/faedab64034f78f066abccc57b310a55b3191c67.jpg";        Glide.with(this).load(gifUrl).placeholder(R.mipmap.ic_launcher).into(ivGlide4);        // (5)加载资源gif        tvGlide5.setText("(5)加载资源gif");        Glide.with(this).load(R.drawable.loading).asGif().placeholder(R.mipmap.ic_launcher).into(ivGlide5);        //(6)加载本地gif        tvGlide6.setText("(6)加载本地gif");        String gifPath = Environment.getExternalStorageDirectory() + "/meinv2.jpg";        File gifFile = new File(gifPath);        Glide.with(this).load(gifFile).placeholder(R.mipmap.ic_launcher).into(ivGlide6);        //(7)加载本地小视频和快照        tvGlide7.setText("(7)加载本地小视频和快照");        String videoPath = Environment.getExternalStorageDirectory() + "/video.mp4";        File videoFile = new File(videoPath);        Glide.with(this).load(Uri.fromFile(videoFile)).placeholder(R.mipmap.ic_launcher).into(ivGlide7);

4、图片变换处理

 Glide.with(mContext)                        .load(R.drawable.check)                        .override(width, height)                        .bitmapTransform(new CenterCrop(mContext),                                new MaskTransformation(mContext, R.drawable.mask_starfish))                        .into(holder.image);

glide-transformations库地址:
https://github.com/wasabeef/glide-transformations

三、Demo效果
这里写图片描述
demo地址:https://github.com/TDCQZD/GlideTest
四、源码解析
推荐郭霖博客
Android图片加载框架最全解析(二),从源码的角度理解Glide的执行流程
http://blog.csdn.net/guolin_blog/article/details/53939176

结束语:
首先感谢尚硅谷无偿提供的学习资料。写博客是为了帮助开发者学习使用技术,同时巩固自己所学技术。如果此篇博客有助于您的学习,那是我的荣幸!如果此篇博客有任何瑕疵,请多多指教!在此感谢您的学习和指教!

原创粉丝点击