Android Glide图片加载库的使用

简介
Glide是 Google推荐的图片加载库,它可以支持来自url,Android资源,文件,Uri中的图片加载,同时还支持gif图片的加载,以及各种图片显示前的bitmap处理(例如:圆角图片,圆形图片,高斯模糊,旋转,灰度等等),缓存处理,请求优先级处理,动画处理,缩略图处理,图片大小自定义等等.可谓是非常的强大.

添加依赖
[html] view plain copy
compile ‘com.github.bumptech.glide:glide:3.7.0’

加载网络图片
[html] view plain copy
public class TestGlideActivity extends Activity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_test);
String url = “http://www.qq745.com/uploads/allimg/141106/1-141106153Q5.png“;
ImageView targetView = (ImageView) findViewById(R.id.iv_target);
Glide.with(this).
load(url).
asBitmap(). //强制处理为bitmap
into(targetView);//显示到目标View中
}
}

加载资源图片
[html] view plain copy
public class TestGlideActivity extends Activity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_test);
int resourceId = R.drawable.test;
ImageView targetView = (ImageView) findViewById(R.id.iv_target);
Glide.with(this).
load(resourceId).
asBitmap().
into(targetView);
}
}

加载本地文件图片
[html] view plain copy
public class TestGlideActivity extends Activity
@Override
protected void onCreate (Bundle savedInstanceState) {
super onCreate(savedInstanceState);
setContentView(R.layout.activity_test);
File file = new File(Environment.getExternalStorageDirectory(),”test.jpg”>);
ImageView targetView = (ImageView) findViewById(R.id.iv_target);
Glide.with(this).
load(file).
asBitmap().
into(targetView);
}
}

从Uri中加载
[html] view plain copy
public class TestGlideActivity extends Activity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_test);
Uri uri = Uri.parse(“android.resource://” + this.getPackageName() + “/” + R.drawable.test);
ImageView targetView = (ImageView) findViewById(R.id.iv_target);
Glide.with(this).
load(uri).
asBitmap().
into(targetView);
}
}

6.加载gif图片

[html] view plain copy
public class TestGlideActivity extends Activity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_test);
ImageView targetView = (ImageView) findViewById(R.id.iv_target);
Glide.with(this).
load(R.drawable.smail).
asGif().//注意:这里显示的指明了要加载的是gif图片,当然即使不指明,glide也会自己判断.
into(targetView);
}
}

设置默认图片和加载失败时显示的图片
[html] view plain copy
public class TestGlideActivity extends Activity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_test);
ImageView targetView = (ImageView) findViewById(R.id.iv_target);
Glide.with(this).
load(R.drawable.test).
asBitmap().
placeholder(R.drawable.bg_loading).//加载中显示的图片
error(R.drawable.bg_error).//加载失败时显示的图片
into(targetView);
}
}

淡入显示效果
[html] view plain copy
public class TestGlideActivity extends Activity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_test);
ImageView targetView = (ImageView) findViewById(R.id.iv_target);
Glide.with(this).
load(R.drawable.test).
placeholder(R.drawable.bg_loading).//加载中显示的图片
error(R.drawable.bg_error).//加载失败时显示的图片
crossFade().//淡入显示,注意:如果设置了这个,则必须要去掉asBitmap
into(targetView);
}
}

另外,crossFade还可以接收一个参数来设置淡入显示效果的持续时间,crossFade(int duration);
如果你想直接显示图片,而不是淡入显示图片,则可以通过dontAnimate()方法设置.

调整图片像素大小
[html] view plain copy
public class TestGlideActivity extends Activity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_test);
ImageView targetView = (ImageView) findViewById(R.id.iv_target);
Glide.with(this).
load(R.drawable.test).
placeholder(R.drawable.bg_loading).//加载中显示的图片
error(R.drawable.bg_error).//加载失败时显示的图片
crossFade(1000).//淡入显示的时间,注意:如果设置了这个,则必须要去掉asBitmap
override(80,80).//设置最终显示的图片像素为80*80,注意:这个是像素,而不是控件的宽高
into(targetView);
}
}

设置CenterCrop,FitCenter
CenterCrop,FitCenter都是对目标图片进行裁剪,了解过ImageView的ScaleType属性就知道,这2种裁剪方式在ImageView上也是有的,分别对应ImageView的ImageView.ScaleType.CENTER_CROP和mageView.ScaleType.FIT_CENTER的.

[html] view plain copy
public class TestGlideActivity extends Activity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_test);
ImageView targetView = (ImageView) findViewById(R.id.iv_target);
targetView.setScaleType(ImageView.ScaleType.FIT_CENTER);
Glide.with(this).
load(R.drawable.test).
placeholder(R.drawable.bg_loading).//加载中显示的图片
error(R.drawable.bg_error).//加载失败时显示的图片
crossFade(1000).//淡入淡出,注意:如果设置了这个,则必须要去掉asBitmap
override(80,80).//设置最终显示的图片像素为80*80,注意:这个是像素,而不是控件的宽高
centerCrop().//中心裁剪,缩放填充至整个ImageView
into(targetView);
}
}

缓存策略设置
内存缓存设置,通过skipMemoryCache(boolean)来设置是否需要缓存到内存,默认是会缓存到内存的.

[html] view plain copy
public class TestGlideActivity extends Activity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_test);
ImageView targetView = (ImageView) findViewById(R.id.iv_target);
targetView.setScaleType(ImageView.ScaleType.FIT_CENTER);
Glide.with(this).
load(R.drawable.test).
placeholder(R.drawable.bg_loading).//加载中显示的图片
error(R.drawable.bg_error).//加载失败时显示的图片
crossFade(1000).//淡入淡出,注意:如果设置了这个,则必须要去掉asBitmap
override(80,80).//设置最终显示的图片像素为80*80,注意:这个是像素,而不是控件的宽高
centerCrop().//中心裁剪,缩放填充至整个ImageView
skipMemoryCache(true).//跳过内存缓存
into(targetView);
}
}

磁盘缓存,磁盘缓存通过diskCacheStrategy(DiskCacheStrategy)来设置,DiskCacheStrategy一共有4种模式:

DiskCacheStrategy.NONE:什么都不缓存
DiskCacheStrategy.SOURCE:仅缓存原图(全分辨率的图片)
DiskCacheStrategy.RESULT:仅缓存最终的图片,即修改了尺寸或者转换后的图片
DiskCacheStrategy.ALL:缓存所有版本的图片,默认模式

[html] view plain copy
public class TestGlideActivity extends Activity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_test);
ImageView targetView = (ImageView) findViewById(R.id.iv_target);
targetView.setScaleType(ImageView.ScaleType.FIT_CENTER);
Glide.with(this).
load(R.drawable.test).
placeholder(R.drawable.bg_loading).//加载中显示的图片
error(R.drawable.bg_error).//加载失败时显示的图片
crossFade(1000).//淡入淡出,注意:如果设置了这个,则必须要去掉asBitmap
override(80, 80).//设置最终显示的图片像素为80*80,注意:这个是像素,而不是控件的宽高
centerCrop().//中心裁剪,缩放填充至整个ImageView
skipMemoryCache(true).//跳过内存缓存
diskCacheStrategy(DiskCacheStrategy.RESULT).//保存最终图片
into(targetView);
}
}

缓存设置
在GlideModule 中,我们可以设置磁盘缓存的位置,磁盘缓存的大小和内存缓存的大小,同时还可以设置图片的显示质量.

要是用GlideModule ,需要创建它的实现类,然后在manifests中申明实现类的全类路径:

[html] view plain copy

猜你喜欢

转载自blog.csdn.net/chen_xiaobao/article/details/79799849