Android Glide加载圆形图片,设置圆形边框
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加载圆形图片,设置圆形边框相关推荐
- android glide加载webp动画设置播放动画次数和监听动画播放完成
需求 产品经理说:需要使用一系列的动画,我说没问题啊,用gif图不就好了吗?结果,设计师给了我一系列的webp动图.我能怎么办? 先是百度了一番,找到了一个播放webp动画的glide库,库地址是Gl ...
- Android Glide加载圆形图片、圆角图片,部分圆角图片的使用方法
Android Glide加载圆形图片.圆角图片,部分圆角图片的使用方法 前言 Gilde圆形图片/头像 Gilde普通圆角图片即四个角都是圆角 Gilde对指定角设置圆角 前言 通过本文,您可以实现 ...
- Android Glide加载图片成圆形
今天,简单讲解android使用glide加载图片成圆形. 这个很简单,因为之前需要在RecyclerView里加载圆形图片,所以在网上查找了资料,很简单就解决了. 1.导入依赖 implementa ...
- android glide圆形图片,Android Glide加载图片成圆形
释放双眼,带上耳机,听听看~! 今天,简单讲解android使用glide加载图片成圆形. 这个很简单,因为之前需要在RecyclerView里加载圆形图片,所以在网上查找了资料,很简单就解决了. 1 ...
- Android Glide加载图片时转换为圆形、圆角、毛玻璃等图片效果
Android Glide加载图片时转换为圆形.圆角.毛玻璃等图片效果 附录1简单介绍了Android开源的图片加载框架.在实际的开发中,虽然Glide解决了快速加载图片的问题,但还有一个问题悬 ...
- Android开发之Glide加载U盘音乐的专辑图片的方法 | Glide加载content:图片 | Glide加载内容提供者 | Glide加载MP3专辑图片 | Glide加载音乐专辑图片
老套路先(献)上图 1.说下核心,Glide提供了直接加载内容提供者的方法用于显示图片 2.Glide加载的图片的格式如下 content://com.yhsh.app.media.server.us ...
- Android 系统(167)----Glide加载圆角图片的方法
Glide加载圆角图片的方法 现在在市面上很多App的UI设计都会出现圆角图片的显示.Glide本身也提供了圆角图片的加载方式.但是我们在开发中有可能遇到只要顶部展示圆角,或者某一个角是圆角.这样的需 ...
- android圆角glide,Glide加载圆角图片的方法
原标题:Glide加载圆角图片的方法 现在在市面上很多App的UI设计都会出现圆角图片的显示.Glide本身也提供了圆角图片的加载方式.但是我们在开发中有可能遇到只要顶部展示圆角,或者某一个角是圆角. ...
- Android Glide 加载圆形图片(绝对实用)
1.导入依赖 implementation 'com.github.bumptech.glide:glide:4.6.1' 2.用Glide加载圆形图片 Glide.with(context).loa ...
最新文章
- 云服务器重装系统后卡顿,低延迟云服务器发生卡顿丢包检测方法
- 删除数据库里面所有表!
- numpy.ndarray size changed, may indicate binary incompatibility. Expected 88 from C header, got 80 f
- rsa签名算法实现_国密算法在链化未来区块链中的运用
- QT的QMaterial类的使用
- java lang保_android – Gson中的RuntimeException解析JSON:无法调用受保护的java.lang.ClassLoader()而没有args...
- error: Please reinstall the libcurl distribution - easy.h should be in curl-dir/include/curl/
- [转载] Python中产生随机数
- envi栅格TIF数据进行分割_常用水文气象数据读取及其可视化(二进制、HDF5、NetCDF)以GLDAS、MODIS、GSMaP为例...
- 【QT】QT字体详解
- python微信库无法登录怎么办出现异常_微信出现异常登录了怎么办
- Nodejs修改镜像以及缓存路径
- Excel图表制作(二):下拉菜单实现动态图表
- wordpress主题下载,wp主题模板下载
- win764位loadrunner安装问题:提示:少了Microsoft Visual c++2005 sp1运行时组件,安装时会提示命令行选项语法错误,键入“命令/?”可获取帮肋信息,无法正常安装;
- 新生儿住月子中心20天患败血症 什么是败血症?有哪些危害
- 【CXY】JAVA应用 之 快捷工具托盘
- UML类图属性和相关关系
- Qt小项目之txt文本替换
- 四种xml的解析方式
热门文章
- 微信开发平台账号权限申请过程
- excel数据匹配_深层挖掘EXCEL里的高级应用-北京场
- “-MyBeijing-”:北京120个场所开通免费WiFi
- 一些资源网站和有用的软件什么的
- 威纶和s7200通讯线_S7-200作为从站用一个通讯口同时与组态王和维纶触摸屏通讯,用PPI协议,可以吗?...
- Google 昨晚发了一堆新硬件,却讲了一个老故事
- 我的一些搞笑面试经历
- 画交叉验证的ROC曲线,多个样本不同的ROC重叠。
- 2023-2029年中国变频空调行业市场行情监测及发展趋势分析报告
- 「10月27-28日」2022第四届中国汽车智能座舱国际峰会大会邀请函