基于Glide V4.0封装的GlideImageView,可监听加载图片时的进度

GlideImageView 是基于Glide V4.0设计的,实现如下特性:

1、通过提供的属性可以设置图片的圆角、边框。
2、可以设置点击触摸图片时的颜色、透明度。
3、一行代码加载来自网络、res、SDCard中的图片,可加载成圆形。
4、可以监听加载图片时的进度。


设置圆角、边框的图片,触摸图片时的效果,显示Gif图的效果


监听先加载缩略图再加载高清图片进度的效果图



GitHub地址

APK下载地址,去手机上体验吧 (◐‿◑)


具体使用说明如下

Gradle:
compile 'com.sunfusheng:glideimageview:1.0.0'复制代码
Maven:
<dependency>
  <groupId>com.sunfusheng</groupId>
  <artifactId>glideimageview</artifactId>
  <version>1.0.0</version>
  <type>pom</type>
</dependency>复制代码


ShapeImageView 和 GlideImageView 共同的属性

该库提供了一个ShapeImageView类,可以在xml当中,也可以在代码中设置图片的一些属性,
当然这些属性也可以在GlideImageView上面设置,具体属性如下

Attribute 属性Description 描述
siv_border_color边框颜色
siv_border_width边框宽度
siv_pressed_color触摸图片时的颜色
siv_pressed_alpha触摸图片时的颜色透明度: 0.0f - 1.0f
siv_radius圆角弧度
siv_shape_type两种形状类型:默认是0:rectangle、1:circle
下面是在xml中和代码中设置的效果
xml中设置代码中设置


一行代码加载来自网络、res、SDCard中图片
public GlideImageView loadImage(String url, int placeholderResId);
public GlideImageView loadLocalImage(@DrawableRes int resId, int placeholderResId); 
public GlideImageView loadLocalImage(String localPath, int placeholderResId);复制代码
一行代码加载来自网络、res、SDCard中图片成圆形
public GlideImageView loadCircleImage(String url, int placeholderResId); 
public GlideImageView loadLocalCircleImage(int resId, int placeholderResId);
public GlideImageView loadLocalCircleImage(String localPath, int placeholderResId);复制代码
如果你觉得上面的方法还不能满足你,那么你可以通过下面的方法追加自己想要的属性来加载图片
RequestOptions requestOptions(int placeholderResId);
RequestOptions circleRequestOptions(int placeholderResId);

GlideImageView load(int resId, RequestOptions options);
GlideImageView load(Uri uri, RequestOptions options);
GlideImageView load(String url, RequestOptions options);复制代码
如果你还是觉得得不到满足,好吧,我提供了GlideImageLoader类加载图片,比如这样加载图片:先加载缩略图再加载高清图片,并监听加载的进度
private void loadImage(String image_url_thumbnail, String image_url) {
    RequestOptions requestOptions = glideImageView.requestOptions(R.color.black)
            .centerCrop()
            .skipMemoryCache(true) // 跳过内存缓存
            .diskCacheStrategy(DiskCacheStrategy.NONE); // 不缓存到SDCard中

    glideImageView.getImageLoader().setOnGlideImageViewListener(image_url, new OnGlideImageViewListener() {
        @Override
        public void onProgress(int percent, boolean isDone, GlideException exception) {
            progressView.setProgress(percent);
            progressView.setVisibility(isDone ? View.GONE : View.VISIBLE);
        }
    });

    glideImageView.getImageLoader().requestBuilder(image_url, requestOptions)
            .thumbnail(Glide.with(ImageActivity.this) // 加载缩略图
                    .load(image_url_thumbnail)
                    .apply(requestOptions))
            .transition(DrawableTransitionOptions.withCrossFade()) // 动画渐变加载
            .into(glideImageView);
}复制代码



该库提供两种监听加载图片进度的Listener,总有一款是你想要的
public interface OnGlideImageViewListener {
    void onProgress(int percent, boolean isDone, GlideException exception);
}

public interface OnProgressListener {
    void onProgress(String imageUrl, long bytesRead, long totalBytes, boolean isDone, GlideException exception);
}复制代码


GitHub地址


关于我

个人邮箱:sfsheng0322@126.com

GitHub主页

简书主页

个人博客

新浪微博

转载于:https://juejin.im/post/594741e4ac502e006ba6742a

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值