Glide4.0使用
Posted 段合江
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Glide4.0使用相关的知识,希望对你有一定的参考价值。
导入
-
dependencies { compile \'com.github.bumptech.glide:glide:4.0.0\' compile \'com.android.support:support-v4:25.3.1\' annotationProcessor \'com.github.bumptech.glide:compiler:4.0.0\' }
-
2.下载jar 地址:glide.jar
基本使用
- 基本使用
Glide.with(this).load(imgUrl).into(img1);
2. 设置预加载和加载失败的图片及缓存策略
RequestOptions options = new RequestOptions()
.centerCrop()
.placeholder(R.mipmap.ic_launcher)//预加载图片
.error(R.mipmap.ic_launcher)//加载失败显示图片
.priority(Priority.HIGH)//优先级
.diskCacheStrategy(DiskCacheStrategy.NONE);//缓存策略
Glide.with(this).load(imgUrl).apply(options).into(img1);
显示圆形图片
- 定义转化圆形的类 继承自BitmapTransforation
public class GlideCircleTransform extends BitmapTransformation { public GlideCircleTransform(){ super(); } @Override protected Bitmap transform(@NonNull BitmapPool pool, @NonNull Bitmap toTransform, int outWidth, int outHeight) { return circleCrop(pool,toTransform); } @Override public void updateDiskCacheKey(MessageDigest messageDigest) { } 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; 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; } }
- 在RequestOptions中配置该类
RequestOptions options2 = new RequestOptions() .centerCrop() .placeholder(R.mipmap.ic_launcher)//预加载图片 .error(R.mipmap.ic_launcher)//加载失败显示图片 .priority(Priority.HIGH)//优先级 .diskCacheStrategy(DiskCacheStrategy.NONE)//缓存策略 .transform(new GlideCircleTransform());//转化为圆形 Glide.with(this).load(imgUrl).apply(options2).into(img1);
显示圆角图片
- 定义转化圆形的类 继承自BitmapTransforation
public class GlideRoundTransform extends BitmapTransformation { private static float radius=0f; public GlideRoundTransform(){ this(4); } public GlideRoundTransform(int dp){ super(); this.radius= Resources.getSystem().getDisplayMetrics().density*dp; } @Override protected Bitmap transform(@NonNull BitmapPool pool, @NonNull Bitmap toTransform, int outWidth, int outHeight) { return roundCrop(pool,toTransform); } @Override public void updateDiskCacheKey(MessageDigest messageDigest) { } 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; } }
- 在RequestOptions中配置该类
RequestOptions options1 = new RequestOptions() .centerCrop() .placeholder(R.mipmap.ic_launcher)//预加载图片 .error(R.mipmap.ic_launcher)//加载失败显示图片 .priority(Priority.HIGH)//优先级 .diskCacheStrategy(DiskCacheStrategy.NONE)//缓存策略 .transform(new GlideRoundTransform(20));//转化为圆角 Glide.with(this).load(imgUrl).apply(options1).into(img1);
以上是关于Glide4.0使用的主要内容,如果未能解决你的问题,请参考以下文章
Glide4.0源码全解析,GlideAPP和.with()方法背后的故事