ProgressDialog进度条更改文件单位

2024-06-06 08:48

本文主要是介绍ProgressDialog进度条更改文件单位,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

ProgressDialog进度条更改文件单位

效果图

效果图

重点部分

重点方法:setProgressNumberFormat

DownLoadRunnable:模拟下载线程

package com.demo.progress;/*** Created by talon on 2020/5/20* note: 模拟下载线程*/
public class DownLoadRunnable implements Runnable {// 模拟数据大小10Mprivate long fileLength = 10 * 1024 * 1024;private UpdateCallBack updateCallBack;void setUpdateCallBack(UpdateCallBack callBack) {updateCallBack = callBack;}@Overridepublic 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;@Overrideprotected 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();}@Overridepublic void updateProcess(final long all, final long cur) {runOnUiThread(new Runnable() {@Overridepublic 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

这篇关于ProgressDialog进度条更改文件单位的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1035637

相关文章

如何更改pycharm缓存路径和虚拟内存分页文件位置(c盘爆红)

《如何更改pycharm缓存路径和虚拟内存分页文件位置(c盘爆红)》:本文主要介绍如何更改pycharm缓存路径和虚拟内存分页文件位置(c盘爆红)问题,具有很好的参考价值,希望对大家有所帮助,如有... 目录先在你打算存放的地方建四个文件夹更改这四个路径就可以修改默认虚拟内存分页js文件的位置接下来从高级-

PyCharm如何更改缓存位置

《PyCharm如何更改缓存位置》:本文主要介绍PyCharm如何更改缓存位置的实现方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录PyCharm更改缓存位置1.打开PyCharm的安装编程目录2.将config、sjsystem、plugins和log的路径

CentOS7更改默认SSH端口与配置指南

《CentOS7更改默认SSH端口与配置指南》SSH是Linux服务器远程管理的核心工具,其默认监听端口为22,由于端口22众所周知,这也使得服务器容易受到自动化扫描和暴力破解攻击,本文将系统性地介绍... 目录引言为什么要更改 SSH 默认端口?步骤详解:如何更改 Centos 7 的 SSH 默认端口1

Python中实现进度条的多种方法总结

《Python中实现进度条的多种方法总结》在Python编程中,进度条是一个非常有用的功能,它能让用户直观地了解任务的进度,提升用户体验,本文将介绍几种在Python中实现进度条的常用方法,并通过代码... 目录一、简单的打印方式二、使用tqdm库三、使用alive-progress库四、使用progres

更改docker默认数据目录的方法步骤

《更改docker默认数据目录的方法步骤》本文主要介绍了更改docker默认数据目录的方法步骤,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一... 目录1.查看docker是否存在并停止该服务2.挂载镜像并安装rsync便于备份3.取消挂载备份和迁

poj 1981 单位圆套最多点

题意: 给n(300)个点,用单位圆去套他们,问最多能套多少个点。 解析: 点击打开链接 直接当作单位圆套最多点的模板吧,用极脚来排序。 代码: #pragma comment(linker, "/STACK:1677721600")#include <map>#include <set>#include <cmath>#include <queue>

单位权中误差 详细介绍

单位权中误差(Unit Weight Error, UWE)是用于描述测量数据不确定性的一个统计量,特别是在地理信息系统(GIS)、导航和定位系统中。它主要用于评估和比较不同测量系统或算法的精度。以下是对单位权中误差的详细介绍: 1. 基本概念 单位权中误差(UWE): 定义:单位权中误差表示每个观测值(测量值)在估算中的标准误差。它是误差的一个统计量,主要用于评估测量系统的精度。单位:通常

[项目][CMP][直接向堆申请页为单位的大块内存]详细讲解

目录 1.系统调用 1.系统调用 Windows和Linux下如何直接向堆申请页为单位的大块内存: VirtualAllocbrk和mmap // 直接去堆上按页申请空间static inline void *SystemAlloc(size_t kpage){#ifdef _WIN32void *ptr = VirtualAlloc(0, kpage << 13,

C++实现百分号进度条的程序

#include<iostream>#include<Windows.h>//Sleep调用using namespace std;int main(){std::cout << "\n正在输出记录数据...... ";for( int i=0; i <= 100; i++ ) // 打印百分比 {std::cout.width(3);//i的输出为3位宽std::cout <<

HarmonyOS】ArkTS学习之基于TextTimer的简易计时器的elapsedTime最小时间单位问题

本文旨在纪录自己对TextTimer使用过程的疑惑问题 我在查看教程时候,发现很多博客在onTimer(event: (utc: number, elapsedTime: number) => void) 这里提到elapsedTime:计时器经过的时间,单位为毫秒。我不清楚是否为版本问题。 在我查看version11和version10的api时候,说的都是设置格式的最小单位。 经过个人检验的