带进度值的GlideProgress

简介: 带进度值的GlideProgress

带进度值的GlideProgress

GlideProgress 基于

Glide的底层是基于okhttp实现的

implementation 'com.github.bumptech.glide:glide:3.7.0'
    implementation 'com.squareup.okhttp:okhttp:2.4.0'
    implementation 'com.squareup.okio:okio:1.5.0'

ProgressResponseBody

private ResponseBody responseBody;
private ProgressListener progressListener;
private BufferedSource bufferedSource;
public ProgressResponseBody(ResponseBody responseBody, ProgressListener progressListener) {
    this.responseBody = responseBody;
    this.progressListener = progressListener;
}
@Override
public MediaType contentType() {
    return responseBody.contentType();
}
@Override
public long contentLength() {
    try {
        return responseBody.contentLength();
    } catch (IOException e) {
        e.printStackTrace();
    }
    return 0;
}
@Override
public BufferedSource source() {
    if (bufferedSource == null) {
        try {
            bufferedSource = Okio.buffer(source(responseBody.source()));
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
    return bufferedSource;
}
private Source source(Source source) {
    return new ForwardingSource(source) {
        long totalBytesRead = 0;
        @Override
        public long read(Buffer sink, long byteCount) throws IOException {
            long bytesRead = super.read(sink, byteCount);
            totalBytesRead += bytesRead != -1 ? bytesRead : 0;
            if (progressListener != null)
                progressListener.progress(totalBytesRead, responseBody.contentLength(), bytesRead == -1);
            return bytesRead;
        }
    };
}

代码下载地址,复制粘贴进去就可用


目录
相关文章
|
4月前
|
JavaScript
弹框下次触发时还保留上次的触发条件
弹框下次触发时还保留上次的触发条件
|
1天前
|
Python
颜色变化时间提醒
【9月更文挑战第10天】
17 9
|
2月前
|
存储 监控 Serverless
函数计算产品使用问题之怎么查看生成进度
实时计算Flink版作为一种强大的流处理和批处理统一的计算框架,广泛应用于各种需要实时数据处理和分析的场景。实时计算Flink版通常结合SQL接口、DataStream API、以及与上下游数据源和存储系统的丰富连接器,提供了一套全面的解决方案,以应对各种实时计算需求。其低延迟、高吞吐、容错性强的特点,使其成为众多企业和组织实时数据处理首选的技术平台。以下是实时计算Flink版的一些典型使用合集。
|
12月前
|
域名解析 存储 网络协议
每月进度总结 7月1日~7月22日(上)
每月进度总结 7月1日~7月22日(上)
66 0
|
12月前
|
网络协议 Java 网络架构
每月进度总结 7月1日~7月22日(下)
每月进度总结 7月1日~7月22日(下)
73 0
|
存储 资源调度 数据可视化
R问题|数值模拟流程记录和分享
R问题|数值模拟流程记录和分享
133 0
|
前端开发 JavaScript NoSQL
[前端]每间隔一段时间查询接口获取到百分比,在页面上按照百分比展示进度条,百分比进度后下载文件
[前端]每间隔一段时间查询接口获取到百分比,在页面上按照百分比展示进度条,百分比进度后下载文件
|
前端开发 JavaScript
51、进度事件
进度事件用来描述资源加载的进度,主要由 AJAX 请求、<img>、<audio>、<video>、<style>、<link>等外部资源的加载触发,继承了ProgressEvent接口。它主要包含以下几种事件。
152 0
|
算法
设置无效,为什么下载分数经常变化?
设置无效,为什么下载分数经常变化?
79 0