标签:context into word class gets 应用程序 列表 显示 error
1. Glide缓存
分为两种,
内存缓存
Glide默认将图片资源缓存到内存,当我们不想使用内存缓存时。跳过内存缓存skipMemoryCache(true)见名知意。同时,Glide将会仍然使用磁盘缓存,来避免重复请求网络数据。
Glide.with(this)
.load("http://2f.zol-img.com.cn/product/104_1200x900/305/cevDJaCdeLQ6.gif")
.override(800, 300)
.skipMemoryCache(true) //跳过内存缓存
.placeholder(R.mipmap.ic_launcher)
.error(R.mipmap.ic_launcher_round)
.into(iv_2);
磁盘缓存
就不多说,直接上代码。
我们需要根据上述所给的几种类型,来选择你需要的方式。
Glide.with(this)
.load("http://2f.zol-img.com.cn/product/104_1200x900/305/cevDJaCdeLQ6.gif")
.override(800, 300)
.diskCacheStrategy(DiskCacheStrategy.NONE)
.placeholder(R.mipmap.ic_launcher)
.error(R.mipmap.ic_launcher_round)
.into(iv_2);
两种缓存都不使用
同时调用两个方法
Glide.with(this)
.load("http://2f.zol-img.com.cn/product/104_1200x900/305/cevDJaCdeLQ6.gif")
.override(800, 300)
.skipMemoryCache(true) //跳过内存缓存
.diskCacheStrategy(DiskCacheStrategy.NONE)
.placeholder(R.mipmap.ic_launcher)
.error(R.mipmap.ic_launcher_round)
.into(iv_2);
2.图片请求的优先级
在开发过程中,比如A图片是一张非常大的图片,B,C图片相对要小。这个时候我们需要让A图片先加载显示。我们就需要使用该方法。
这个枚举给了四个不同的选项,下面是按照递增priority(优先级)的列表:
Priority.IMMEDIATE
具体代码
这个时候会先加载 带有Priority.HIGH属性的图片资源,然后才去加载Priority.LOW属性的图片资源。
还有一个情况,是我在测试的时候遇到:
发现,如果优先级较低的图片有设置缓存数据,当我们第二次再次进入这个界面时,该图片会优先于未设置缓存数据的图片,先加载出来。可以自行测试
Glide.with(this)
.load("http://pic6.huitu.com/res/20130116/84481_20130116142820494200_1.jpg")
.placeholder(R.drawable.ic_launcher)
.error(R.mipmap.ic_launcher_round)
.priority(Priority.LOW)
.into(iv_1);
tv_title2.setText("加载gif资源");
Glide.with(this)
.load("http://2f.zol-img.com.cn/product/104_1200x900/305/cevDJaCdeLQ6.gif")
.override(800, 300)
.priority(Priority.HIGH)
.placeholder(R.mipmap.ic_launcher)
.error(R.mipmap.ic_launcher_round)
.into(iv_2);
3.自定义缩略图
概述:缩略图不同于之前博客提到的占位符。占位符必须附带应用程序捆绑的资源才行。缩略图是动态占位符。它也可以从网络中加载。缩略图将会在实际请求加载完或者处理完之后才显示。如果缩略图对于任何原因,在原始图像到达之后,它不会取代原始图像。它只会被抹除。
Glide.with(this)
.load("http://pic6.huitu.com/res/20130116/84481_20130116142820494200_1.jpg")
.thumbnail(0.1f)
.into(iv_8);
thumbnail(0.1f)这个属性,实现的效果是原图1000*1000,缩小十倍100*100缩略图显示出来。
下面这种自定义缩略图
它的优点多说了,看上面的概述。
DrawableRequestBuilder<Integer> thumbail = Glide.with(this)
.load(R.drawable.ic_pb_default);
Glide.with(this)
.load("http://pic6.huitu.com/res/20130116/84481_20130116142820494200_1.jpg")
.thumbnail(thumbail)
.into(iv_8);
所不同的是,第一个缩略图请求是完全独立于第二个原始请求的。该缩略图可以是不同的资源或图片 URL,你可以为其应用不同的转换,等等。
3.Glide 中的回调:Targets
概述:前面所讲的在into()里设置ImageVeiw,试想一下,如果这将不是最后一步,可以在into()里设置Targets的方式去接受图片资源的Bitmap。Targets 是没有任何别的回调,它在 Glide 做完所有的加载和处理之后返回结果。
private SimpleTarget simpleTarget = new SimpleTarget<Bitmap>(200,200) {
@Override
public void onResourceReady(Bitmap resource, GlideAnimation<? super Bitmap> glideAnimation) {
iv_9.setImageBitmap(resource);
}
};
tv_title9.setText("Glide 中的回调:Targets");
Glide.with(this)
.load("http://pic6.huitu.com/res/20130116/84481_20130116142820494200_1.jpg")
.asBitmap()
.into(simpleTarget);
Glide.with(getApplicationContext))
.load("http://pic6.huitu.com/res/20130116/84481_20130116142820494200_1.jpg")
.asBitmap()
.into(simpleTarget);
当然可能有人再问,如果我想设置ImageView大小。这我Glide已经有解决方法,Target是可以指定尺寸。使用方法,看上面的代码。具体看源码。
ViewTarget自定义视图
这个主要是用在自定义View,比如我们程序中有一个组合自定义控件,里面有ImageView需要我们设置。这个时候用ViewTarget更容易实现。
FutureStudioView studioView = (FutureStudioView) findViewById(R.id.custom_view);
ViewTarget viewTarget = new ViewTarget<FutureStudioView, GlideDrawable>(studioView) {
@Override
public void onResourceReady(GlideDrawable resource, GlideAnimation<? super GlideDrawable> glideAnimation) {
this.view.setImage(resource.getCurrent());
this.view.setText(String.valueOf(resource.getCurrent()));
}
};
Glide.with(this)
.load("http://pic6.huitu.com/res/20130116/84481_20130116142820494200_1.jpg")
.into(viewTarget);
认真研究,你会发现,我们还可以在ViewTarget里面去给TextView设置值。具体自己去测试吧。
加载图片到Notifications
见名知意,就是通知栏图标嘛。Glide还提供了方便舒适的方式:NotificationTarget。我们用效果图说话吧。
模拟器不是特别美观,讲究这看下。也别太在意这些细节。具体代码会有下载地址。
标签:context into word class gets 应用程序 列表 显示 error
原文地址:http://blog.csdn.net/u013290250/article/details/53814678