Glide加载图片,Glide可以很方便的实现圆形加载并且也还可以设置变色边框。
关于Glide的加载在这里不详细说了,主要说一下自定义BitmapTransformation来实现圆形图片加载

 static class GlideCircleTransform extends BitmapTransformation {private Paint mBorderPaint;private float mBorderWidth;public GlideCircleTransform(Context context) {super(context);}public GlideCircleTransform(Context context, int borderWidth, int borderColor) {super(context);mBorderWidth = Resources.getSystem().getDisplayMetrics().density * borderWidth;mBorderPaint = new Paint();mBorderPaint.setDither(true);mBorderPaint.setAntiAlias(true);mBorderPaint.setColor(borderColor);mBorderPaint.setStyle(Paint.Style.STROKE);mBorderPaint.setStrokeWidth(mBorderWidth);}protected Bitmap transform(BitmapPool pool, Bitmap toTransform, int outWidth, int outHeight) {return circleCrop(pool, toTransform);}private Bitmap circleCrop(BitmapPool pool, Bitmap source) {if (source == null) return null;int size = (int) (Math.min(source.getWidth(), source.getHeight()) - (mBorderWidth / 2));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);if (mBorderPaint != null) {float borderRadius = r - mBorderWidth / 2;canvas.drawCircle(r, r, borderRadius, mBorderPaint);}return result;}@Overridepublic String getId() {return getClass().getName();}}

然后在用glide加载的时候

//带白色边框的圆形图片加载Glide.with(mContext).load(path).centerCrop().placeholder(R.drawable.defalut_img).transform(new GlideCircleTransform(mContext,2,mContext.getResources().getColor(R.color.white))).diskCacheStrategy(DiskCacheStrategy.SOURCE).into(imageview);
//不带白色边框的圆形图片加载Glide.with(mContext).load(path).centerCrop().placeholder(R.drawable.defalut_img).transform(new GlideCircleTransform(mContext)).diskCacheStrategy(DiskCacheStrategy.SOURCE).into(imageview);

Glide的加载工具类

public class GlideUtils {/*** 加载网络图片* @param mContext* @param path* @param imageview*/public static void LoadImage(Context mContext, String path,ImageView imageview) {Glide.with(mContext).load(path).centerCrop().placeholder(R.drawable.defalut_img).diskCacheStrategy(DiskCacheStrategy.SOURCE).into(imageview);}/*** 加载带尺寸的图片* @param mContext* @param path* @param Width* @param Height* @param imageview*/public static void LoadImageWithSize(Context mContext, String path,int Width, int Height, ImageView imageview) {Glide.with(mContext).load(path).override(Width, Height).diskCacheStrategy(DiskCacheStrategy.SOURCE).into(imageview);}/*** 加载本地图片* @param mContext* @param path* @param imageview*/public static void LoadImageWithLocation(Context mContext, Integer path,ImageView imageview) {Glide.with(mContext).load(path).diskCacheStrategy(DiskCacheStrategy.SOURCE).into(imageview);}/*** 圆形加载** @param mContext* @param path* @param imageview*/public static void LoadCircleImage(Context mContext, int path,ImageView imageview) {Glide.with(mContext).load(path).centerCrop().placeholder(R.drawable.defalut_img).transform(new GlideCircleTransform(mContext,2,mContext.getResources().getColor(R.color.white))).diskCacheStrategy(DiskCacheStrategy.SOURCE).into(imageview);}static class GlideCircleTransform extends BitmapTransformation {private Paint mBorderPaint;private float mBorderWidth;public GlideCircleTransform(Context context) {super(context);}public GlideCircleTransform(Context context, int borderWidth, int borderColor) {super(context);mBorderWidth = Resources.getSystem().getDisplayMetrics().density * borderWidth;mBorderPaint = new Paint();mBorderPaint.setDither(true);mBorderPaint.setAntiAlias(true);mBorderPaint.setColor(borderColor);mBorderPaint.setStyle(Paint.Style.STROKE);mBorderPaint.setStrokeWidth(mBorderWidth);}protected Bitmap transform(BitmapPool pool, Bitmap toTransform, int outWidth, int outHeight) {return circleCrop(pool, toTransform);}private Bitmap circleCrop(BitmapPool pool, Bitmap source) {if (source == null) return null;int size = (int) (Math.min(source.getWidth(), source.getHeight()) - (mBorderWidth / 2));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);if (mBorderPaint != null) {float borderRadius = r - mBorderWidth / 2;canvas.drawCircle(r, r, borderRadius, mBorderPaint);}return result;}@Overridepublic String getId() {return getClass().getName();}}
}

Android Glide加载圆形图片,设置圆形边框相关推荐

  1. android glide加载webp动画设置播放动画次数和监听动画播放完成

    需求 产品经理说:需要使用一系列的动画,我说没问题啊,用gif图不就好了吗?结果,设计师给了我一系列的webp动图.我能怎么办? 先是百度了一番,找到了一个播放webp动画的glide库,库地址是Gl ...

  2. Android Glide加载圆形图片、圆角图片,部分圆角图片的使用方法

    Android Glide加载圆形图片.圆角图片,部分圆角图片的使用方法 前言 Gilde圆形图片/头像 Gilde普通圆角图片即四个角都是圆角 Gilde对指定角设置圆角 前言 通过本文,您可以实现 ...

  3. Android Glide加载图片成圆形

    今天,简单讲解android使用glide加载图片成圆形. 这个很简单,因为之前需要在RecyclerView里加载圆形图片,所以在网上查找了资料,很简单就解决了. 1.导入依赖 implementa ...

  4. android glide圆形图片,Android Glide加载图片成圆形

    释放双眼,带上耳机,听听看~! 今天,简单讲解android使用glide加载图片成圆形. 这个很简单,因为之前需要在RecyclerView里加载圆形图片,所以在网上查找了资料,很简单就解决了. 1 ...

  5. Android Glide加载图片时转换为圆形、圆角、毛玻璃等图片效果

     Android Glide加载图片时转换为圆形.圆角.毛玻璃等图片效果 附录1简单介绍了Android开源的图片加载框架.在实际的开发中,虽然Glide解决了快速加载图片的问题,但还有一个问题悬 ...

  6. Android开发之Glide加载U盘音乐的专辑图片的方法 | Glide加载content:图片 | Glide加载内容提供者 | Glide加载MP3专辑图片 | Glide加载音乐专辑图片

    老套路先(献)上图 1.说下核心,Glide提供了直接加载内容提供者的方法用于显示图片 2.Glide加载的图片的格式如下 content://com.yhsh.app.media.server.us ...

  7. Android 系统(167)----Glide加载圆角图片的方法

    Glide加载圆角图片的方法 现在在市面上很多App的UI设计都会出现圆角图片的显示.Glide本身也提供了圆角图片的加载方式.但是我们在开发中有可能遇到只要顶部展示圆角,或者某一个角是圆角.这样的需 ...

  8. android圆角glide,Glide加载圆角图片的方法

    原标题:Glide加载圆角图片的方法 现在在市面上很多App的UI设计都会出现圆角图片的显示.Glide本身也提供了圆角图片的加载方式.但是我们在开发中有可能遇到只要顶部展示圆角,或者某一个角是圆角. ...

  9. Android Glide 加载圆形图片(绝对实用)

    1.导入依赖 implementation 'com.github.bumptech.glide:glide:4.6.1' 2.用Glide加载圆形图片 Glide.with(context).loa ...

最新文章

  1. 云服务器重装系统后卡顿,低延迟云服务器发生卡顿丢包检测方法
  2. 删除数据库里面所有表!
  3. numpy.ndarray size changed, may indicate binary incompatibility. Expected 88 from C header, got 80 f
  4. rsa签名算法实现_国密算法在链化未来区块链中的运用
  5. QT的QMaterial类的使用
  6. java lang保_android – Gson中的RuntimeException解析JSON:无法调用受保护的java.lang.ClassLoader()而没有args...
  7. error: Please reinstall the libcurl distribution - easy.h should be in curl-dir/include/curl/
  8. [转载] Python中产生随机数
  9. envi栅格TIF数据进行分割_常用水文气象数据读取及其可视化(二进制、HDF5、NetCDF)以GLDAS、MODIS、GSMaP为例...
  10. 【QT】QT字体详解
  11. python微信库无法登录怎么办出现异常_微信出现异常登录了怎么办
  12. Nodejs修改镜像以及缓存路径
  13. Excel图表制作(二):下拉菜单实现动态图表
  14. wordpress主题下载,wp主题模板下载
  15. win764位loadrunner安装问题:提示:少了Microsoft Visual c++2005 sp1运行时组件,安装时会提示命令行选项语法错误,键入“命令/?”可获取帮肋信息,无法正常安装;
  16. 新生儿住月子中心20天患败血症 什么是败血症?有哪些危害
  17. 【CXY】JAVA应用 之 快捷工具托盘
  18. UML类图属性和相关关系
  19. Qt小项目之txt文本替换
  20. 四种xml的解析方式

热门文章

  1. 微信开发平台账号权限申请过程
  2. excel数据匹配_深层挖掘EXCEL里的高级应用-北京场
  3. “-MyBeijing-”:北京120个场所开通免费WiFi
  4. 一些资源网站和有用的软件什么的
  5. 威纶和s7200通讯线_S7-200作为从站用一个通讯口同时与组态王和维纶触摸屏通讯,用PPI协议,可以吗?...
  6. Google 昨晚发了一堆新硬件,却讲了一个老故事
  7. 我的一些搞笑面试经历
  8. 画交叉验证的ROC曲线,多个样本不同的ROC重叠。
  9. 2023-2029年中国变频空调行业市场行情监测及发展趋势分析报告
  10. 「10月27-28日」2022第四届中国汽车智能座舱国际峰会大会邀请函