砖垛之glide

编程入门 行业动态 更新时间:2024-10-05 05:22:58

砖垛之<a href=https://www.elefans.com/category/jswz/34/1768272.html style=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

本文发布于:2024-02-28 06:10:09,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/1768674.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:glide

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!