EasyGlide是一款基于Glide4.12.0的工具封装类,功能不复杂,主要是为了方便使用以及防止重复劳动,一行代码就可以搞定一切。工程中对于图片加载进度的监听参考了GlideImageView,但是由于GlideImageView对于代码的侵入性太高,因此选择重新封装。最近版本已改为Kotlin实现。调用扩展函数的方式调用。
- 单页上GIF数目过多时,GIF会疯狂掉帧。
- 加载完毕后PlaceHolder不会自动隐藏 Glide #3195
- 2.0.1
- 升级至Androidx
- 升级Gradle至7.0+
- 升级Glide至4.12.0
- 升级OKHttp至4.7.0
- 优化代码风格&逻辑
- 2.0.0
- 改为Kotlin扩展函数
- 1.0.8
- 增加加载本地图片Resize方法
- 1.0.7
- 增加RequestListener
- 1.0.6
- 修复加载透明图片PlaceHolder不自动隐藏的问题
allprojects { repositories { ... maven { url 'https://www.jitpack.io' } } } dependencies { implementation 'com.github.BzCoder:EasyGlide:2.0.1' //kotlin实现版本 implementation 'com.github.BzCoder:EasyGlide:1.0.8' //Java实现版本 } - EasyGlide
- CircleProgressView
- SelectImageView
Java版本工具类都在EasyGlide当中,其中封装了常用的图片加载方法。包含基本常用功能(圆形,黑白,圆角矩形,高斯模糊,变换大小,监听下载进度,清除缓存)。
EasyGlide.loadImage(this, url4, iv2); EasyGlide.loadImage(this, url4, iv2, new RequestListener()); EasyGlide.loadBlurImage(this, url4, iv3); EasyGlide.loadCircleImage(this, url4, iv4); EasyGlide.loadRoundCornerImage(this, url4, iv5); EasyGlide.loadGrayImage(this, url4, iv6); EasyGlide.loadResizeXYImage(this, url2, 800, 200, iv7); EasyGlide.loadCircleWithBorderImage(this, url2, iv9); EasyGlide.loadBorderImage(this, url2, iv13); EasyGlide.loadImageWithTransformation(this, url2, iv8, new GrayscaleTransformation(), new RoundedCornersTransformation(50, 0)); EasyGlide.clearDiskCache(this); EasyGlide.clearMemory(this); EasyGlide.clearImage(this,imageView);这些函数可能不能满足需求多种多样的你,所以你也可以通过实现loadImage(Context context, GlideConfigImpl config)模仿EasyGlide来对EasyGlide进行扩充。也欢迎直接替issue给我,我来帮您扩充。
你可以尽早的设置全局默认placeholder,当然也可以单独设置placeholder。
EasyGlide.placeHolderImageView = R.color.red; EasyGlide.circlePlaceholderImageView = R.color.red;- Kotlin使用扩展函数,调用更加简单方便直观。
iv_3.loadBlurImage(this, url4) iv_4.loadCircleImage(this, url4) iv_5.loadRoundCornerImage(this, url4) iv_6.loadGrayImage(this, url4) iv_7.loadResizeXYImage(this, url2, 800, 200) iv_8.loadImageWithTransformation(this, url2, GrayscaleTransformation(), RoundedCornersTransformation(50, 0)) iv_9.loadCircleWithBorderImage(this, url2) iv_10.loadImageWithTransformation(this, url2, BlurTransformation(this, 20), GrayscaleTransformation(), CircleCrop()) iv_11.loadImage(this, R.drawable.test) iv_12.loadImage(this, "") iv_13.loadBorderImage(this, url2) @AfterPermissionGranted(WRITE_EXTERNAL_PERM) private void downloadImage() { if (hasStoragePermission()) { EasyGlide.downloadImageToGallery(iv1.getContext(), url3); } else { EasyPermissions.requestPermissions( this, getString(R.string.need_write_external), WRITE_EXTERNAL_PERM, Manifest.permission.WRITE_EXTERNAL_STORAGE); } }就是原封不动来自GlideImageView ,在布局中加入即可,有三种样式可供选择。
<me.bzcoder.easyglide.progress.CircleProgressView android:id="@+id/progressView" android:layout_width="50dp" android:layout_height="50dp" android:layout_centerInParent="true" android:layout_margin="10dp" android:progress="0" android:visibility="gone" app:cpv_progressNormalColor="@color/transparent10" app:cpv_progressReachColor="@color/transparent90_white" app:cpv_progressStyle="FillInnerArc" app:cpv_progressTextColor="@color/red" app:cpv_progressTextSize="13sp" app:cpv_progressTextVisible="false" /> 一个点击可以变为半透明的View,算是一个Bonus,所以放在了Sample里。逻辑十分简单,看代码即可。
