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
结束语:
首先感谢尚硅谷无偿提供的学习资料。写博客是为了帮助开发者学习使用技术,同时巩固自己所学技术。如果此篇博客有助于您的学习,那是我的荣幸!如果此篇博客有任何瑕疵,请多多指教!在此感谢您的学习和指教!
- Android图片处理框架之Glide学习使用
- Android图片处理之Glide使用大全
- Android图片处理之Glide使用大全
- Android图片处理之Glide使用大全
- Android图片处理之Glide使用大全
- 图片处理框架之Glide
- android图片处理最in框架glide的学习
- Android Glide图片框架使用
- Android图片加载框架之Glide使用详解
- Android框架之图片框架Glide
- Glide 图片处理框架
- Android图片处理框架之Picasso学习使用
- Android图片处理框架之Fresco学习使用
- 学习Glide--Android图片加载框架
- 【Android 进阶】图片加载框架之Glide
- 【Android 进阶】图片加载框架之Glide
- Android开发之图片加载框架Glide
- Android图片加载框架Glide之Glide的自定义模块
- codeforces 271A(Beautiful Year) Java
- MongoDB详细介绍
- JDBC的业务逻辑流程和模块开发的原理分析
- Java基础的编程:9*9乘法表、质数的寻找、scanner的使用和迭代的基础
- Hibernate之HQL总结
- Android图片处理框架之Glide学习使用
- 一.windows下Erlang和RabbitMQ的安装
- 事件监听(addEventListener())及其移除(removeEventListener)
- 【接口测试】接口mock之基础知识
- 我人生中的第一篇博客
- Friend Circles
- jdk 安装和eclipse 安装
- Eclipse对html和js代码自动提示
- Shell 流程控制