Android 平滑图片加载和缓存库 Glide
来源:互联网 发布:爱的算法免费下载 编辑:程序博客网 时间:2024/06/07 11:31
转载:http://www.codeceo.com/article/android-glide-usage.html
1.如果你刚好使用了这个圆形Imageview库或者其他的一些自定义的圆形Imageview,而你又刚好设置了占位的话,那么,你就会遇到第一个问题。如何解决呢?
方案一: 不设置占位;
方案二:使用Glide的Transformation API自定义圆形Bitmap的转换。这里是一个已有的例子;
方案三:使用下面的代码加载图片:
Glide.with(mContext) .load(url) .placeholder(R.drawable.loading_spinner) .into(new SimpleTarget<Bitmap>(width, height) { @Override public void onResourceReady(Bitmap bitmap, GlideAnimation anim) { // setImageBitmap(bitmap) on CircleImageView } };
于第二个问题,请记住一句话:不要再非主线程里面使用Glide加载图片,如果真的使用了,请把context参数换成getApplicationContext。更多的细节请参考这个issue。
3.为什么不能设置Tag,是因为你使用的姿势不对哦。如何为ImageView设置Tag呢?且听我细细道来。
方案一:使用setTag(int,object)方法设置tag,具体用法如下:
Java代码是酱紫的:
Glide.with(context).load(urls.get(i).getUrl()).fitCenter().into(imageViewHolder.image); imageViewHolder.image.setTag(R.id.image_tag, i); imageViewHolder.image.setOnClickListener(new View.OnClickListener() { @Override int position = (int) v.getTag(R.id.image_tag); Toast.makeText(context, urls.get(position).getWho(), Toast.LENGTH_SHORT).show(); } });
同时在values文件夹下新建ids.xml,添加
大功告成!
方案二:从Glide的3.6.0之后,新添加了全局设置的方法。具体方法如下:
先实现GlideMoudle接口,全局设置ViewTaget的tagId:
public class MyGlideMoudle implements GlideModule{ @Override public void applyOptions(Context context, GlideBuilder builder) { ViewTarget.setTagId(R.id.glide_tag_id); } @Override public void registerComponents(Context context, Glide glide) { }}
同样,也需要在ids.xml下添加id
<item name="glide_tag_id" type="id"/>
最后在AndroidManifest.xml文件里面添加
<meta-data android:name="com.yourpackagename.MyGlideMoudle" android:value="GlideModule" />
又可以愉快的玩耍了,嘻嘻`(∩_∩)′。
方案三:写一个继承自ImageViewTaget的类,复写它的
get/setRequest方法。Glide.with(context).load(urls.get(i).getUrl()).fitCenter().into(new ImageViewTarget<GlideDrawable>(imageViewHolder.image) { @Override protected void setResource(GlideDrawable resource) { imageViewHolder.image.setImageDrawable(resource); } @Override public void setRequest(Request request) { imageViewHolder.image.setTag(i); imageViewHolder.image.setTag(R.id.glide_tag_id,request); } @Override public Request getRequest() { return (Request) imageViewHolder.image.getTag(R.id.glide_tag_id); } }); imageViewHolder.image.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { int position = (int) v.getTag(); Toast.makeText(context, urls.get(position).getWho(), Toast.LENGTH_SHORT).show(); } });
一些使用技巧
1.Glide.with(context).resumeRequests()和 Glide.with(context).pauseRequests()
当列表在滑动的时候,调用pauseRequests()取消请求,滑动停止时,调用resumeRequests()恢复请求。这样是不是会好些呢?
2.Glide.clear()
当你想清除掉所有的图片加载请求时,这个方法可以帮助到你。
3.ListPreloader
如果你想让列表预加载的话,不妨试一下ListPreloader这个类。
- Android 平滑图片加载和缓存库 Glide 使用详解
- Android 平滑图片加载和缓存库 Glide 使用详解
- Android 平滑图片加载和缓存库 Glide 使用详解
- Android平滑图片加载和缓存库 Glide 使用详解
- Android 平滑图片加载和缓存库 Glide 使用详解
- Android 平滑图片加载和缓存库 Glide 使用详解
- Android 平滑图片加载和缓存库 Glide 使用详解
- Android 平滑图片加载和缓存库 Glide
- Android 平滑图片加载和缓存库 Glide 使用详解
- Android平滑图片加载和缓存库 Glide 使用详解
- Android平滑图片加载和缓存库 Glide 使用详解
- Android 平滑图片加载和缓存库 Glide 使用详解
- Android 平滑图片加载和缓存库 Glide 使用详解
- Android平滑图片加载和缓存库 Glide 使用详解
- Android 平滑图片加载和缓存库 Glide 使用详解
- Android平滑图片加载和缓存库Glide使用详解
- Android平滑图片加载和缓存库 Glide 使用详解
- Android 平滑图片加载和缓存库 Glide 使用详解
- 用Linq 解决 数据的多字段分组统计(VB.net)
- 快学Scala第8章----继承
- JAVA中native方法调用C语言实现学习
- 操作系统:进程管理
- 堆(heap)和栈(stack)有什么区别
- Android 平滑图片加载和缓存库 Glide
- 《Java小游戏实现》:坦克大战(续一)
- 使用C++网络库libcurl
- leetcode 203 Remove-Linked-List-Elements
- 登山-C#-两个小知识点,字符串补全,在TextBox中捕获回车键
- 使用主机putty登陆vmware虚拟机里的suse系统
- HDOJ 2544 最短路(四种做法)
- 信号(signal)介绍
- SVN知识整理[iOS]