Glide是一个优秀的图片加载工具库.它可以支持多种图片数据源.在对图片加载并显示时,能较好的处理好缓存,保持较低的内存占用.目前已经被Google用于其官方应用中.
为什么要使用Glide?
Android在使用图片的时候是相当麻烦的,因为需要一个像素一个像素地加载这些图片到内存。一个中端手机所拍摄的一张照片有2592×1936(5百万)像素,这会占用大概19M内存。如果你再加上各种好坏不一的网络下的图片请求,同时要处理缓存、图片加载等问题,焦头烂额。如果你这时候使用了一个像Glide一样经过不断优化和严格测试的图片处理库,你会庆幸你节省了大量的时间,同时也避免了很多头疼的问题。
添加Glide到AndroidStudio项目中
- 第一种方法:和大多数依赖库一样,在Gradle项目中只需要在build.gradle中添加一行:(可直接copy)
compile 'com.github.bumptech.glide:glide:3.7.0'
- 第二种方法:自己动手,丰衣足食
找到如图:
搜索glide.得到的结果和第一种方式一样.
常见设置
- placeholder() 占位图片
- error() 加载失败
- crossFade()淡入淡出
- dontAnimate()无动画效果
- override()调整图片大小
- transform()自定义图形转换
- skipMemoryCache(true)不做内存缓存
- diskCacheStrategy(DiskCacheStrategy.ALL)磁盘缓存
- DiskCacheStrategy.ALL 缓存所有版本的图片
- DiskCacheStrategy.NONE 不缓存任何图片
- DiskCacheStrategy.SOURCE 只缓存全分辨率的图像
- DiskCacheStrategy.RESULT 只缓存经过处理的图片
第一次尝试:从一个 URL加载图片
用Glide完成一个完整的图片加载功能请求,需要向其构造器中至少传入3个参数,分别是:
with(Context context)
:Context是许多Android API需要调用的, Glide也不例外。这里Glide非常方便,你可以任意传递一个Activity或者Fragment对象,它都可以自动提取出上下文。load(String imageUrl)
:这里传入的是你要加载的图片的URL,大多数情况下这个String类型的变量会链接到一个网络图片。into(ImageView targetImageView)
:将你所希望解析的图片传递给所要显示的ImageView。
举个栗子(不可以吃哦):
ImageView targetImageView= (ImageView) findViewById(R.id.img);
String internetUrl = "https://www.baidu.com/img/bd_logo1.png";
Glide.
with(this).
load(internetUrl).
into(targetImageView);
注:犯了一个低级错误,访问网络没添加权限,图片半天加载不出来..害得我纠结了好久.原谅我还是个菜鸟妹纸.
<!-- 访问网络的权限 -->
<uses-permission android:name="android.permission.INTERNET"/>
如果上面这个URL链接的图片的确存在,并且你的ImageView可见,你将会在1~2秒见到这张图片被加载。
假如上面这张图片不存在,Glide会回调相应的出错接口(这个以后再具体介绍)。
你可能已经被这个3行代码说服,觉得这个Glide的确对你有用。不过,现在你所见到的,只是Glide全部特性里的冰山一角而已。