Glide的使用
来源:互联网 发布:淘宝详情怎么添加图片 编辑:程序博客网 时间:2024/06/05 18:37
- 主页: https://github.com/bumptech/glide
- 中文文档: http://mrfu.me/2016/02/27/Glide_Getting_Started/
使用步骤
- 添加依赖 compile ‘com.github.bumptech.glide:glide:3.7.0’ , 同时还依赖于supportV4.如果没有请自行添加
添加权限:
<uses-permission android:name="android.permission.INTERNET"/>
加载图片.示例代码:
Glide .with(this) // 指定Context .load(URL_GIF)// 指定图片的URL .placeholder(R.mipmap.ic_launcher)// 指定图片未成功加载前显示的图片 .error(R.mipmap.ic_launcher)// 指定图片加载失败显示的图片 .override(300, 300)//指定图片的尺寸 .fitCenter()//指定图片缩放类型为fitCenter .centerCrop()// 指定图片缩放类型为centerCrop .skipMemoryCache(true)// 跳过内存缓存 .diskCacheStrategy(DiskCacheStrategy.NONE)//跳过磁盘缓存 .diskCacheStrategy(DiskCacheStrategy.SOURCE)//仅仅只缓存原来的全分辨率的图像 .diskCacheStrategy(DiskCacheStrategy.RESULT)//仅仅缓存最终的图像 .diskCacheStrategy(DiskCacheStrategy.ALL)//缓存所有版本的图像 .priority(Priority.HIGH)//指定优先级.Glide 将会用他们作为一个准则,并尽可能的处理这些请求,但是它不能保证所有的图片都会按照所要求的顺序加载。优先级排序:IMMEDIATE > HIGH > NORMAL > LOW .into(imageView);//指定显示图片的ImageView
显示圆形图片
class GlideCircleTransform extends BitmapTransformation { public GlideCircleTransform(Context context) { super(context); } @Override protected Bitmap transform(BitmapPool pool, Bitmap toTransform, int outWidth, int outHeight) { return circleCrop(pool, toTransform); } private static Bitmap circleCrop(BitmapPool pool, Bitmap source) { if (source == null) return null; int size = Math.min(source.getWidth(), source.getHeight()); int x = (source.getWidth() - size) / 2; int y = (source.getHeight() - size) / 2; // TODO this could be acquired from the pool too Bitmap squared = Bitmap.createBitmap(source, x, y, size, size); Bitmap result = pool.get(size, size, Bitmap.Config.ARGB_8888); if (result == null) { result = Bitmap.createBitmap(size, size, Bitmap.Config.ARGB_8888); } Canvas canvas = new Canvas(result); Paint paint = new Paint(); paint.setShader(new BitmapShader(squared, BitmapShader.TileMode.CLAMP, BitmapShader.TileMode.CLAMP)); paint.setAntiAlias(true); float r = size / 2f; canvas.drawCircle(r, r, r, paint); return result; } @Override public String getId() { return getClass().getName(); }}Glide .with(this) // 指定Context .load(URL_GIF)// 指定图片的URL .transform(new GlideCircleTransform(this)) // 指定自定义BitmapTransformation .into(imageView);//指定显示图片的ImageView
显示圆角图片
class GlideRoundTransform extends BitmapTransformation { private static float radius = 0f; public GlideRoundTransform(Context context) { this(context, 4); } public GlideRoundTransform(Context context, int dp) { super(context); this.radius = Resources.getSystem().getDisplayMetrics().density * dp; } @Override protected Bitmap transform(BitmapPool pool, Bitmap toTransform, int outWidth, int outHeight) { return roundCrop(pool, toTransform); } private static Bitmap roundCrop(BitmapPool pool, Bitmap source) { if (source == null) return null; Bitmap result = pool.get(source.getWidth(), source.getHeight(), Bitmap.Config.ARGB_8888); if (result == null) { result = Bitmap.createBitmap(source.getWidth(), source.getHeight(), Bitmap.Config.ARGB_8888); } Canvas canvas = new Canvas(result); Paint paint = new Paint(); paint.setShader(new BitmapShader(source, BitmapShader.TileMode.CLAMP, BitmapShader.TileMode.CLAMP)); paint.setAntiAlias(true); RectF rectF = new RectF(0f, 0f, source.getWidth(), source.getHeight()); canvas.drawRoundRect(rectF, radius, radius, paint); return result; } @Override public String getId() { return getClass().getName() + Math.round(radius); }}Glide .with(this) // 指定Context .load(URL_GIF)// 指定图片的URL .transform(new GlideRoundTransform(this,30)) // 指定自定义BitmapTransformation .into(imageView);//指定显示图片的ImageView
更改Glide默认配置的步骤:
创建一个GlideModule的实现类,并在其中更改自己需要的设置.示例代码:
public class SimpleGlideModule implements GlideModule { @Override public void applyOptions(Context context, GlideBuilder builder) { // 更改Bitmap图片压缩质量为8888,默认为565 builder.setDecodeFormat(DecodeFormat.PREFER_ARGB_8888); } @Override public void registerComponents(Context context, Glide glide) { // todo }}
在manifet/Application中添加一个meta-data节点.name值为刚刚创建的GlideModule实现类的完整包名+类名,value值为GlideModule.示例代码:
<meta-data android:name="com.alpha.glidedemo.SimpleGlideModule" android:value="GlideModule" />
- 之后Glide加载图片的时候将会按照新的设置加载.
图像库对比
- 快速加载图片推荐Glide
- 对图片质量要求较高推荐Picasso
- 如果应用加载的图片很多,推荐Fresco > Glide > Picasso
- 四种工具比较如图所示
0 0
- Android - Glide的使用
- Android - Glide的使用
- Glide 的基本使用
- Glide的简单使用
- Glide的使用
- Glide的使用
- Glide的简单使用
- Glide的使用
- Glide的使用
- glide的基本使用
- Glide的使用详解
- Glide的使用
- Glide的使用大全
- Glide的使用
- Glide的使用
- Glide的简单使用
- Glide的使用
- Glide的简单使用
- Linux常用命令(一)
- 一篇很全面的freemarker教程
- 160. Intersection of Two Linked Lists
- iOS崩溃捕获以及收集原理
- C++ STL中哈希表 hash_map从头到尾详细介绍
- Glide的使用
- Win7 dos命令行操作快捷键
- sourceTree
- H.264 RTP PAYLOAD 格式
- 线性筛
- 本章介绍ubuntu kylin 系统的日志文件
- JAVA基础Error
- boost库获取时间
- XML解析SAX