glide"/>
砖垛之glide
引用:
compile 'com.github.bumptech.glide:glide:3.5.2'
Glide.with(context).load(imageUrl)//.load( Uri.fromFile( new File( filePath ) ) )//加载视频的缩略图.placeholder(R.mipmap.ic_launcher) //设置占位图.error(R.mipmap.future_studio_launcher) //设置错误图片.crossFade() //设置淡入淡出效果,默认300ms,可以传参.override(600, 200)//限制图片的大小.asGif()//加载GIF//.dontAnimate() //不显示动画效果.skipMemoryCache( true )//设置图片不加入到内存缓存.diskCacheStrategy( DiskCacheStrategy.NONE )//设置图片不加入到磁盘缓存.into(imageViewFade);
1.正常加载
Glide.with(context).load(imageUrl).into(imageView);
2.设置加载中等待图片
Glide.with(context).load(imageUrl).placeholder(R.mipmap.ic_launcher).into(imageView);
3.设置加载失败图片
Glide.with(context).load(imageUrl).error(R.mipmap.ic_launcher).into(imageView);
4.设置图片缩放
1)使用centerCrop是利用图片图填充ImageView设置的大小,如果ImageView的Height是match_parent则图片就会被拉伸填充
Glide.with(context).load(imageUrl).centerCrop().into(imageView);
2)使用fitCenter即缩放图像让图像都测量出来等于或小于 ImageView 的边界范围,该图像将会完全显示,但可能不会填满整个ImageView。
Glide.with(context).load(imageUrl).fitCenter().into(imageView);
5.加载GIF图
Glide.with(context).load(imageUrl).asGif().into(imageView);
6.显示本地视频
String filePath = "/storage/emulated/0/Pictures/example_video.mp4";
Glide.with( context ).load( Uri.fromFile( new File( filePath ) ) ).into(imageViewGifAsBitmap );
7.缓存策略
Glide.with( context ).load(imageUrl).skipMemoryCache(true).into(imageViewInternet );//跳过内存缓存Glide.with( context ).load(imageUrl).diskCacheStrategy(DiskCacheStrategy.NONE).into( imageViewInternet );//跳过硬盘缓存
•DiskCacheStrategy.NONE 什么都不缓存
•DiskCacheStrategy.SOURCE 仅仅只缓存原来的全分辨率的图像
•DiskCacheStrategy.RESULT 仅仅缓存最终的图像,即降低分辨率后的(或者是转换后的)
•DiskCacheStrategy.ALL 缓存所有版本的图像(默认行为)
8.优先级,设置图片加载的顺序:
Glide.with(context).load(imageUrl).priority( Priority.HIGH).into( imageView);
9.获取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 } };
10.加载圆形图片和圆角图片
//圆形图片
public 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 tooBitmap 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();}
}
//圆角图片
public 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).load(".png").transform(new GlideRoundTransform(context)).into(imageView);
Glide.with(this).load(".png").transform(new GlideRoundTransform(context, 10)).into(imageView);
Glide.with(this).load(".png").transform(new GlideCircleTransform(context)).into(imageView);
使用技巧
1.Glide.with(context).resumeRequests()和 Glide.with(context).pauseRequests()
当列表在滑动的时候,调用pauseRequests()取消请求,滑动停止时,调用resumeRequests()恢复请求。这样是不是会好些呢?
2.Glide.clear()
当你想清除掉所有的图片加载请求时,这个方法可以帮助到你。
3.ListPreloader
如果你想让列表预加载的话,不妨试一下ListPreloader这个类。
更多推荐
砖垛之glide
发布评论