带进度值的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;
        }
    };
}

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


目录
相关文章
|
消息中间件 存储 Kafka
Flink---11、状态管理(按键分区状态(值状态、列表状态、Map状态、归约状态、聚合状态)算子状态(列表状态、广播状态))
Flink---11、状态管理(按键分区状态(值状态、列表状态、Map状态、归约状态、聚合状态)算子状态(列表状态、广播状态))
|
1月前
|
数据处理
重复值的判断标准是否可以根据具体业务需求进行调整?
重复值的判断标准需要紧密结合具体的业务需求进行灵活调整,这样才能确保数据处理的准确性和有效性,为业务决策提供可靠的数据支持。
119 58
|
29天前
|
项目管理
一次性解决文档、任务、进度管理!
在团队合作日益依赖高效工具的背景下,在线文档协作软件如Google Docs、Notion、Trello及板栗看板等,成为提升生产力的关键。这些工具不仅支持文档编辑,还具备项目管理和任务跟踪功能,尤其板栗看板集成了在线文档与看板管理,适合任务跟踪和进度管理,为团队提供一站式解决方案,显著提高工作效率。
|
网络协议 Java 网络架构
每月进度总结 7月1日~7月22日(下)
每月进度总结 7月1日~7月22日(下)
87 0
|
域名解析 存储 网络协议
每月进度总结 7月1日~7月22日(上)
每月进度总结 7月1日~7月22日(上)
82 0
|
存储 资源调度 数据可视化
R问题|数值模拟流程记录和分享
R问题|数值模拟流程记录和分享
152 0
|
前端开发 JavaScript NoSQL
[前端]每间隔一段时间查询接口获取到百分比,在页面上按照百分比展示进度条,百分比进度后下载文件
[前端]每间隔一段时间查询接口获取到百分比,在页面上按照百分比展示进度条,百分比进度后下载文件
Kam
枚举优化if-else if -else过程记录
枚举优化if-else if -else过程记录
Kam
233 0
|
前端开发 JavaScript
51、进度事件
进度事件用来描述资源加载的进度,主要由 AJAX 请求、<img>、<audio>、<video>、<style>、<link>等外部资源的加载触发,继承了ProgressEvent接口。它主要包含以下几种事件。
163 0
|
监控 C#
c# 判断文件是否发生了变化
你这个是想文件发生改变时,自动调用一个函数,做出一些操作呢。还是有一个按钮(或者别的什么),你去点击一下,然后检测下一个文件,是否发生了变化?   下面的代码,监控d盘下的所有.txt文件的修改 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 ...
2244 0