ProgressDialog進度條更改文件單位

ProgressDialog進度條更改文件單位

效果圖

效果圖

重點部分

重點方法:setProgressNumberFormat

DownLoadRunnable:模擬下載線程

package com.demo.progress;

/**
 * Created by talon on 2020/5/20
 * note: 模擬下載線程
 */
public class DownLoadRunnable implements Runnable {

    // 模擬數據大小10M
    private long fileLength = 10 * 1024 * 1024;
    private UpdateCallBack updateCallBack;

    void setUpdateCallBack(UpdateCallBack callBack) {
        updateCallBack = callBack;
    }

    @Override
    public void run() {

        long curLength = 0;


        while (true) {
            try {

                Thread.sleep(100);

                curLength = curLength + 100000;


                if (updateCallBack != null)
                    updateCallBack.updateProcess(fileLength, curLength);

                if (curLength >= fileLength)
                    break;

            } catch (InterruptedException e) {
                e.printStackTrace();
            }
        }
    }
}

MainActivity: ProgressDialog的具體實現

package com.demo.progress;

import android.app.ProgressDialog;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;

import java.util.Locale;

/**
 * Created by talon on 2020/5/20
 * note: progressDialog 顯示百分比和文件大小
 */
public class MainActivity extends AppCompatActivity implements UpdateCallBack {

    private ProgressDialog mProgressDialog;
    private DownLoadRunnable mDownLoadRunnable;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        mDownLoadRunnable = new DownLoadRunnable();
        mDownLoadRunnable.setUpdateCallBack(this);

        mProgressDialog = new ProgressDialog(this);
        mProgressDialog.setProgressStyle(ProgressDialog.STYLE_HORIZONTAL);
        mProgressDialog.setCancelable(false);
        mProgressDialog.setTitle("下載中...");
    }

    public void Start(View view) {
        mProgressDialog.show();
        new Thread(mDownLoadRunnable).start();
    }

    @Override
    public void updateProcess(final long all, final long cur) {

        runOnUiThread(new Runnable() {
            @Override
            public void run() {

                if (cur >= all) {
                    mProgressDialog.dismiss();
                    return;
                }

                float allFloat = (float) all / 1024 / 1024;
                float curFloat = (float) cur / 1024 / 1024;
                mProgressDialog.setProgressNumberFormat(String.format(Locale.CHINA, "%.2fM/%.2fM", curFloat, allFloat));

                mProgressDialog.setMax((int) all);
                mProgressDialog.setProgress((int) cur);

            }
        });

    }


}


UpdateCallBack: 線程和界面之間的橋樑

package com.demo.progress;

/**
 * Created by talon on 2020/5/20
 * note: 接口通信-橋樑
 */
public interface UpdateCallBack {

    void updateProcess(long all, long cur);

}

demo地址

https://download.csdn.net/download/u011368551/12453905

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章