图片加载框架之Gilde详细讲解(一)
来源:互联网 发布:梁治平知乎 编辑:程序博客网 时间:2024/06/16 22:52
1.Gilde 简介
在泰国举行的谷歌发布者论坛上,谷歌为我们介绍了一个叫Gilde的图片加载库,作者是bumptech。
这个库被广泛的运用在goole的开源项目中,包括2014年goole I/O大会上发布的官方app
使用gilde的优点:
1)使用简单
2)可支配度高,自适应程度高
3)支持常见图片格式 jpg png gif webp
4)支持多种数据源,网络,本地资源,assets等
5)高效缓存策略,支持Memory 和Disk图片缓存,默认bitmap格式采用RGB_565内存至少减少一半
6)生命周期集成,根据activity/Fragment生命周期自动管理请求
7)高效处理bitmap 使用bitmap pool使bitmap复用,主动调用recycle回收需要回收的bitmap,减少系统回收压力。
3.gilde 功能简介:
1)简单使用:
Glide
.with(this)
.load("http://inthecheesefactory.com/uploads/source/nestedfragment/fragments.png")
.into(imageView);
2)Glide.with()使用
(1)with(Context context).
使用Application上下文,Glide请求将不受Activity/Fragment生命周期控制。
(2)with(Activity activity).
使用Activity作为上下文,Glide的请求会受到Activity生命周期控制。
(3)with(FragmentActivity activity).
Glide的请求会受到FragmentActivity生命周期控制。
(4)with(android.app.Fragment fragment).
Glide的请求会受到Fragment 生命周期控制。
(5)with(android.support.v4.app.Fragment fragment).
Glide的请求会受到Fragment生命周期控制。
3)load()使用
Glide基本可以load任何可以拿到的媒体资源
SD卡资源:load("file://"+ Environment.getExternalStorageDirectory().getPath()+"/test.jpg")
assets资源:load("file:///android_asset/f003.gif")
raw资源:load("Android.resource://com.frank.glide/raw/raw_1")或load("android.resource://com.frank.glide/raw/"+R.raw.raw_1)
drawable资源:load("android.resource://com.frank.glide/drawable/news")或load("android.resource://com.frank.glide/drawable/"+R.drawable.news)
ContentProvider资源:load("content://media/external/images/media/139469")
http资源:load("http://img.my.csdn.NET/uploads/201508/05/1438760757_3588.jpg")
https资源:load("https://img.alicdn.com/tps/TB1uyhoMpXXXXcLXVXXXXXXXXXX-476-538.jpg_240x5000q50.jpg_.webp")
注意:
load不限于String类型
还可以是:load(Uri uri),load(File file),load(Integer resourceId),load(URL url),load(byte[] model),load(T model),loadFromMediaStore(Uri uri)。
4)重要功能:
(1)禁止内存缓存:
.skipMemoryCache(true)
(2)清除内存缓存:
// 必须在UI线程中调用
Glide.get(context).clearMemory();
(3)禁止磁盘缓存:
.diskCacheStrategy(DiskCacheStrategy.NONE)
(4)清除磁盘缓存:
// 必须在后台线程中调用,建议同时clearMemory()
Glide.get(applicationContext).clearDiskCache();
(5)获取缓存大小:
new GetDiskCacheSizeTask(textView).execute(new File(getCacheDir(), DiskCache.Factory.DEFAULT_DISK_CACHE_DIR));
(6)指定资源的优先加载顺序:
//优先加载
Glide
.with(context)
.load(heroImageUrl)
.priority(Priority.HIGH)
.into(imageViewHero);
//后加载
Glide
.with(context)
.load(itemImageUrl)
.priority(Priority.LOW)
.into(imageViewItem);
(7)先显示缩略图,再显示原图:
//用原图的1/10作为缩略图
Glide
.with(this)
.load("http://inthecheesefactory.com/uploads/source/nestedfragment/fragments.png")
.thumbnail(0.1f)
.into(iv_0);
//用其它图片作为缩略图
DrawableRequestBuilder<Integer> thumbnailRequest = Glide
.with(this)
.load(R.drawable.news);
Glide.with(this)
.load("http://inthecheesefactory.com/uploads/source/nestedfragment/fragments.png")
.thumbnail(thumbnailRequest)
.into(iv_0);
(8)对图片进行裁剪、模糊、滤镜等处理:
//圆形裁剪
Glide.with(this)
.load("http://inthecheesefactory.com/uploads/source/nestedfragment/fragments.png")
.bitmapTransform(new CropCircleTransformation(this))
.into(iv_0);
//圆角处理
Glide.with(this)
.load("http://inthecheesefactory.com/uploads/source/nestedfragment/fragments.png")
.bitmapTransform(new RoundedCornersTransformation(this,30,0, RoundedCornersTransformation.CornerType.ALL))
.into(iv_0);
//灰度处理
Glide.with(this)
.load("http://inthecheesefactory.com/uploads/source/nestedfragment/fragments.png")
.bitmapTransform(new GrayscaleTransformation(this))
.into(iv_0);
//其它变换...
(9)对请求状态进行监听:
(10)对资源的下载进度进行监听:
4.使用步骤:
1)在build.gradle中添加依赖:
compile 'com.github.bumptech.glide:glide:3.7.0'
2)如果你的项目没有support-v4库,还需要添加supprt-v4依赖:
compile 'com.android.support:support-v4:23.3.0'
3)如果使用变换,可以添加一个自定义的变换库。
阅读全文
1 0
- 图片加载框架之Gilde详细讲解(一)
- 图片加载框架之Gilde详细讲解(二)
- Gilde图片加载框架的使用
- Gilde加载圆形图片
- Gilde加载图片
- 网络框架之Retrofit详细讲解《一》
- AndroidFramework之Volley详细讲解加载网络图片(二)
- 揭秘之从RecyclerView滑动监听到Gilde平滑加载图片
- 揭秘之从RecyclerView滑动监听到Gilde平滑加载图片
- 揭秘之从RecyclerView滑动监听到Gilde平滑加载图片
- Android,Gilde框架加载图片进内存。出现的Bitmap too large to be uploaded into a texture
- 使用Gilde加载图片时裁剪大小异常
- RecyclerView瀑布流的形式利用Gilde加载网络图片
- 视图的隐藏显示附加Gilde加载图片模版
- Gilde加载网络图片到TextView的DrawableTop
- Android之图片加载框架Fresco基本使用(一)
- 详细讲解Android的图片下载框架UniversialImageLoader之磁盘缓存(一)
- 图片加载框架之Picasso
- Android开发人员的自我定位
- 每日一练 20171109
- -TEST Fin 1 for NOIP 垃圾电脑(300-300)
- CSS伪元素
- Hibernate_02_体系结构
- 图片加载框架之Gilde详细讲解(一)
- debian配置redis
- Python高级编程——15.新式类和经典类的区别
- ThreadLocal: 线程独享
- Elasticsearch之es学习工作中遇到的坑(陆续更新)
- .drawerlayout侧滑
- AWK
- 匿名隐私保护总结
- Tornado-Django-Flask框架...