且构网

分享程序员开发的那些事...
且构网 - 分享程序员编程开发的那些事

开源库DownloadProgressBar分析

更新时间:2022-06-11 07:09:07

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

开源库DownloadProgressBar分析
案例包下载地址:https://github.com/panwrona/DownloadProgressBar

包目录:
开源库DownloadProgressBar分析
ps:Android studio项目,Eclipse的小伙伴要自己拆包了
开源库DownloadProgressBar分析
所需的类和一些素材文件也只是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联系,周末愉快!!