开源库DownloadProgressBar分析

简介:

转发请注明出处王亟亟的大牛之路
各式各样的进度条啊,加载的自定义View啊 层出不穷,最近在Git上看到一个DownloadProgressBar觉得蛮好看的,就下载下来看了看实现,分享给大家!
先上效果图:
这里写图片描述

这里写图片描述
案例包下载地址:https://github.com/panwrona/DownloadProgressBar

包目录:
这里写图片描述
ps:Android studio项目,Eclipse的小伙伴要自己拆包了
这里写图片描述
所需的类和一些素材文件也只是3个,东西还算好不是很多,拆起来问题不大。

作为拿来主义的我们!不去看他的具体实现了,毕竟我们还是要使用它,真正的创作靠之后钻研了,先解决现在的需求!

主Activity,也就一个Activity

public class MainActivity extends AppCompatActivity {
    //作者的这个例子是点击TextView就+10%然后直至加满完成显示成功的View,val变量为作为进度的变量。
    private int val = 0;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        final DownloadProgressBar downloadProgressView = (DownloadProgressBar)findViewById(R.id.dpv3);
        final TextView successTextView = (TextView)findViewById(R.id.success_text_view);
        successTextView.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                val = val + 10;
                downloadProgressView.setProgress(val);
            }
        });
        //设置一些字体的属性
        Typeface robotoFont=Typeface.createFromAsset(getAssets(), "fonts/Roboto-Light.ttf");
        successTextView.setTypeface(robotoFont);

        downloadProgressView.setOnClickListener(new View.OnClickListener() {

            @Override
            public void onClick(View v) {
             //开始动画
              downloadProgressView.playManualProgressAnimation();
            }
        });
        //更新进度
        downloadProgressView.setOnProgressUpdateListener(new DownloadProgressBar.OnProgressUpdateListener() {
            @Override
            public void onProgressUpdate(float currentPlayTime) {

            }

            @Override
            public void onAnimationStarted() {
                downloadProgressView.setEnabled(false);
            }

            @Override
            public void onAnimationEnded() {
                val = 0;
                successTextView.setText("Click to download");
                downloadProgressView.setEnabled(true);
            }
            //加载成功
            @Override
            public void onAnimationSuccess() {
                successTextView.setText("Downloaded!");
            }
            //加载失败时
            @Override
            public void onAnimationError() {
                successTextView.setText("Aborted!");
            }

            @Override
            public void onManualProgressStarted() {

            }

            @Override
            public void onManualProgressEnded() {

            }
        });
    }
}

通常开发所需的一些东西都写好了,只需要 一个DownloadProgressBar对象初始化一些参数,调用setOnProgressUpdateListener传入OnProgressUpdateListener()然后 在这个listener里操作业务逻辑就可以了,是不是很方便。

有些小伙伴如果懒得上Git找楼主给予网盘地址:
点击下载 访问密码 c8f7
有问题欢迎QQ 452270579联系,周末愉快!!

目录
相关文章
|
7月前
|
JSON API 开发者
1688 快递费用 API 接口的技术剖析与应用
1688快递费用API接口为企业和开发者提供自动化、高效化的快递费用查询服务,打破人工查询的繁琐局面。通过输入寄件与收件地址、商品重量、体积及选择快递公司等信息,接口精准计算费用并返回结果,支持中通、圆通等主流快递。输出内容包括快递费用、预估时效及附加费说明,助力电商精细化运营。Python示例代码展示了如何使用requests库发起POST请求并解析响应数据,实现费用查询自动化。
367 10
|
编解码 算法 网络协议
流量控制--5.Classless Queuing Disciplines (qdiscs)
流量控制--5.Classless Queuing Disciplines (qdiscs)
213 4
|
9月前
|
vr&ar 图形学 云计算
实时云渲染与虚拟现实的结合:推动3D设计行业向更广阔领域拓展
3D设计行业面临四大难题:渲染时间长、审批流程复杂、成本高且设备更新快、渲染时电脑无法处理其他工作。实时云渲染通过云端算力,提供快速便捷的渲染解决方案,支持多人协同审批,大幅降低硬件成本,提高工作效率。平行云作为国内领先的实时云渲染服务商,已在全球范围内服务上千家企业,涵盖教育培训、数字孪生、医疗健康等多领域,助力3D设计行业高效解决现有难题。
259 18
|
9月前
|
存储 人工智能 边缘计算
AI时代下, 边缘云上的技术演进与场景创新
本文介绍了AI时代下边缘云的技术演进与场景创新。主要内容分为三部分:一是边缘云算力形态的多元化演进,强调阿里云边缘节点服务(ENS)在全球600多个节点的部署,提供低时延、本地化和小型化的价值;二是边缘AI推理的创新发展与实践,涵盖低时延、资源广分布、本地化及弹性需求等优势;三是云游戏在边缘承载的技术演进,探讨云游戏对边缘计算的依赖及其技术方案,如多开技术、云存储和网络架构优化,以提升用户体验并降低成本。文章展示了边缘云在未来智能化、实时化解决方案中的重要性。
357 3
|
9月前
|
存储 容灾 API
云端问道19期方案教学-将本地冗余转换同城冗余,提升业务稳定性
本文介绍了阿里云对象存储OSS如何将本地冗余转换为同城冗余,以提升业务稳定性。内容分为五部分:背景介绍、存储冗余概述、创建同城冗余存储Bucket、转换Bucket的存储冗余类型及补充内容。重点讲解了本地冗余与同城冗余的区别、创建和转换同城冗余的具体操作步骤及注意事项。同城冗余能提供更高的数据持久性和服务可用性,确保业务连续性,且在转换过程中不会对业务产生影响。
219 0
|
11月前
|
Prometheus 监控 Kubernetes
监控工具
监控工具
243 12
|
12月前
|
存储 NoSQL 搜索推荐
nosql
【10月更文挑战第14天】nosql
156 2
|
Java 开发工具 对象存储
简化配置管理:Spring Cloud Config与Netflix OSS中的动态配置解决方案
简化配置管理:Spring Cloud Config与Netflix OSS中的动态配置解决方案
185 2
|
NoSQL 关系型数据库 MySQL
Vgo-适合golang初学者的开源框架
# Vgo Vgo是一款基于Gin的开源服务端框架,集成了Redis、Mysql、JWT及队列等技术栈,适合Golang初学者。项目包括Vgo-Gitee和VgoAdmin-Gitee,可通过克隆仓库并按照安装指南进行部署。其目录结构清晰,涵盖路由、模型、后台接口等功能模块,更多功能持续开发中。
274 3
|
Java 开发者 Spring
Springboot中ApplicationContextInitializer的使用及源码分析
`ApplicationContextInitializer` 是 Spring Boot 提供的一个强大的接口,它允许开发者有机会在应用上下文刷新之前,注入自定义的启动逻辑或预处理。通过合理地利用这个接口,可以提升应用的可配置性和灵活性。了解如何运用 `ApplicationContextInitializer` 可以让你在 Spring Boot 应用的早期启动阶段,有更多控制权。
331 4