平时我们开发中会遇到UI出的带圆角的图片,平时做的图片缓存加载框架基本都是 Glide, 那么我们就在Glide上来说一说实现方法。
Glide是谷歌为我们推荐的一个图片加载库。为什么要选择使用Glide呢?
1、代码有人维护,不至于出现问题,项目组都搞不定的时候问题无法解决。(ImageLoader已没人维护了)
2、代码简洁,可读性很好。(Fresco是一个非常优秀的库,但是配置稍显麻烦,同时代码风格读起来有些生疏)
3、功能强大(400多k的包,包含很多功能,例如:像加载Gif图片就是Picasso做不到的)
第一步 先是添加依赖:
//图片
implementation 'com.github.bumptech.glide:glide:4.5.0'
(切记一定要申请权限 往往最简单的问题 总是会疏忽)
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.INTERNET" />
然后我们重写一个 (GlideRoundTransform)
/** * Created by ShinnyYang on 2018/6/6. * 自定义glide的圆角处理部分 */ public class GlideRoundTransform extends BitmapTransformation { private float radius = 0f; public GlideRoundTransform(Context context) { this(context, 4); } public GlideRoundTransform(Context context, int dp) { this.radius = Resources.getSystem().getDisplayMetrics().density * dp; } @Override protected Bitmap transform(BitmapPool pool, Bitmap toTransform, int outWidth, int outHeight) { Bitmap bitmap = TransformationUtils.centerCrop(pool, toTransform, outWidth, outHeight); return roundCrop(pool, bitmap); } private 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; } public String getId() { return getClass().getName() + Math.round(radius); } @Override public void updateDiskCacheKey(MessageDigest messageDigest) { } }
附加
/** * glide RequestOptions属性 * Created by ${ShinnyYang} on 2019/4/11. */ public class RequestOptionsStrategy extends RequestOptions { @SuppressLint("CheckResult") public RequestOptionsStrategy() { this.error(R.drawable.error_photo).placeholder(R.drawable.error_photo); } @SuppressLint("CheckResult") public RequestOptionsStrategy(@DrawableRes int errorId,@DrawableRes int placeholderId) { this.error(errorId).placeholder(placeholderId); } }
相关推荐
Glide加载圆形图片和自定义圆角图片,可自己设置圆角大小,可以对指定的角进行加载圆角,自定义圆角大小
Glide加载圆形图片和自定义圆角图片,可自己设置圆角大小;
Android实现圆形、圆角、椭圆自定义ImageView,使用Xfermode渲染模式渲染图形实现的,代码有注释,读起来通俗易懂,有需要的可以下载哈 Android实现圆形、圆角、椭圆自定义ImageView,使用Xfermode渲染模式渲染图形...
自定义ImageView,实现指定任意角为圆角,可以用Glide实现,上面两个为圆角,下面两个为直角
Glide是 Google推荐的图片加载库,它可以支持来自url,Android资源,文件,Uri中的图片加载,同时还支持gif图片的加载,以及各种图片显示前的bitmap处理(例如:圆角图片,圆形图片,高斯模糊,旋转,灰度等等),缓存处理,请求...
于是自己自定义了个View,实现图片的圆角以及圆形效果。效果图: Android 圆角图片的实现形式,包括用第三方、也有系统的。比如makeramen:roundedimageview,系统的cardview , glide .fresco 。 compile '...
最近在开发一个Android App,用户头像那里需要弄一个圆形的图片,但是 xml 的方式是不可以的, xml 只能改变背景为圆角的,没法改图片本身。 只能通过java代码改,但是java图像处理不太会用啊,网上的教程一看一...
自定义的圆形,圆角矩形,支持自己设置图片,也支持Glide、Picasso动态加载。使用简单,扔到as中就能使用。此文件摘自大神demo中文件,并对文件进行扩展修改。注意这个是kotlin代码,不过java应该也能调用,过两天有...
Glide加载圆形图片和自定义圆角图片,可自己设置圆角大小,可以对指定的角进行加载圆角
Glide是 Google推荐的图片加载库,它可以支持来自url,Android资源,文件,Uri中的图片加载,同时还支持gif图片的加载,以及各种图片显示前的bitmap处理(例如:圆角图片,圆形图片,高斯模糊,旋转,灰度等等),缓存处理,请求...
动态获权+Glide图片加载+缓存的BaseActivity。在BaseActivity中实现动态获权与缓存代码,集成直接调用即可。而且自定义Glide一些方法,比如圆角、圆形、高斯模糊等处理
支持加载本地和网络,一键开启自动翻页功能,内设好几种翻页动画)、高仿iOS进度条和对话框、activity基类的封装(可继承自BaseActivity自行拓展)、常用自定义View(圆角头像等)、Glide一行代码加载图片、万能的...
能够以同样api获取bitmap,所设置的宽高,高斯模糊,圆角或圆形效果均生效. 解决了fresco最新版中,获取到的bitmap是recycled,不能用的问题 基于subsampling-scale-image-view的大图预览功能,带进度和失败状态,能轮播,...
根据BaseImageLoader持有图片View层的context和BaseImageConfig类实现Glide原生的生命周期感知和多样化的自定义配置加载 BaseImageConfig使用建造者模式,使用更灵活更方便,也可自行继承BaseImageConfig减少类名长度...
自定义网络请求框架,Retrofit2+rxJava。图片处理Glide处理,实现倒角与圆角。还有一些常用工具类。
Glide加载监听,获取缓存,圆角图片。 RecyclerView下拉刷新,上拉加载 。 面向Hoder编程(类似ListView 多类型处理) 。 Fragment懒加载模式。 LinearSnapHelper结合RecyclerView完成酷炫画廊效果。 build....
# RapidDevelop-Android快速开发框架 - 框架持续更新中 - 这个框架是从平时项目里用的比较多的框架里整合而来 - 对本项目感兴趣的可以一起研究喜欢的朋友欢迎star - 同时也欢迎大家的宝贵意见issues - 如果大家...
支持加载本地和网络,一键开启自动翻页功能,内设好几种翻页动画)、高仿iOS进度条和对话框、activity基类的封装(可继承自BaseActivity自行拓展)、常用自定义View(圆角头像等)、Glide一行代码加载图片、万能的...
支持加载本地和网络,一键开启自动翻页功能,内设好几种翻页动画)、高仿iOS进度条和对话框、activity基类的封装(可继承自BaseActivity自行拓展)、常用自定义View(圆角头像等)、Glide一行代码加载图片、万能的...
以下内容废弃,待重新介绍 ...roundedimageview(性能更优化的可以设置圆角的图片框) Glide Gson Android-PickerView(仿ios日期选择框) qiniu-java-sdk(七牛云图片上传库) 其他均为手写自定义view 当