下载文件进度显示--小小Demo——桃先森
话不多说先看效果图
思路:
1.AlertDialog弹框提示
2.ProgressDialog进行下载进度提示
3.AsyncTask进行网络读取数据
代码:
先看MainActivity
“` /* * 测试工具类的下载文件工具,本demo是直接运行 * */ public class
MainActivity extends AppCompatActivity {@Override protected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main); //这是你要下载的文件urlString url="http://gdown.baidu.com/data/wisegame/f98d235e39e29031/baiduxinwen.apk";//调用工具类方法Utils.downFile(MainActivity.this,url,"xxx.apk"); }
} “`
再看utils工具类
/* 作者:桃先森 * 时间:2017/5/25 * 类用途:自定义封装工具类,供大家使用 *
思路:AlertDialog弹框提示,ProgressDialog进行下载进度提示 ** 静态方法介绍 *
参数一:上下文 * 参数二:下载的文件url * 参数三:保存在本地的名字(带文件类型 例如 aaa.apk) */public class Utils {
public static void downFile(final Context context, final String url, final String filename) {final AlertDialog.Builder builder = new AlertDialog.Builder(context);builder.setTitle("提醒");builder.setMessage("有新版本,请更新");builder.setPositiveButton("确定", new DialogInterface.OnClickListener() {ProgressDialog progressDialog;@Overridepublic void onClick(DialogInterface dialog, int which) {progressDialog = new ProgressDialog(context);progressDialog.setMessage("正在更新,请稍等");progressDialog.setProgressStyle(ProgressDialog.STYLE_HORIZONTAL);progressDialog.setIndeterminate(true);progressDialog.show();startAsyntask(context,progressDialog,url,filename);}});builder.setNegativeButton("取消", new DialogInterface.OnClickListener() {@Overridepublic void onClick(DialogInterface dialog, int which) {builder.create().dismiss();}});builder.show();}//启动Asyntask的方法 private static void startAsyntask(final Context context, final ProgressDialog progressDialog, String url, final String filename) {new AsyncTask<String, Integer, String>() {@Overrideprotected void onPreExecute() {super.onPreExecute();}@Overrideprotected void onProgressUpdate(Integer... values) {super.onProgressUpdate(values);progressDialog.setIndeterminate(false);progressDialog.setMax(100);progressDialog.setProgress(values[0]);if (values[0] == 100) {Toast.makeText(context, "下载完成", Toast.LENGTH_SHORT).show();progressDialog.dismiss();}}@Overrideprotected void onPostExecute(String string) {super.onPostExecute(string);}@Overrideprotected String doInBackground(String... params) {String param = params[0];try {URL url = new URL(param);HttpURLConnection connection = (HttpURLConnection) url.openConnection();connection.connect();if (connection.getResponseCode() != 200) {return "链接错误";}//获得内容长度int contentLength = connection.getContentLength();InputStream inputStream = connection.getInputStream();FileOutputStream fileOutputStream = new FileOutputStream("/sdcard/"+filename);byte[] buffer = new byte[1024];int len = 0;int total = 0;while ((len = inputStream.read(buffer)) != -1) {if (isCancelled()) {inputStream.close();} else {total += len;publishProgress((total * 100 / contentLength));fileOutputStream.write(buffer, 0, len);}}return null;} catch (FileNotFoundException e) {e.printStackTrace();} catch (MalformedURLException e) {e.printStackTrace();} catch (IOException e) {e.printStackTrace();}return null;}}.execute(url);}
}
小小工具类,大家可直接使用,如有帮助到您,那是我的荣幸!你的支持就是我的动力,以后会不定式更新能帮助大家的Demo!期待下次在见,我是桃先森我为狸菇凉代言–>_<
下载文件进度显示--小小Demo——桃先森相关推荐
- Android 下载文件并显示进度条
2019独角兽企业重金招聘Python工程师标准>>> OK,上一篇文章讲了上传文件到服务端,并显示进度条 那么这边文章主要讲下载文件并显示进度条. 由于简单,所以只上传代码.还是需 ...
- python实现http下载文件-Python HTTP下载文件并显示下载进度条功能的实现
下面的Python脚本中利用request下载文件并写入到文件系统,利用progressbar模块显示下载进度条. 其中利用request模块下载文件可以直接下载,不需要使用open方法,例如: im ...
- android下载通知栏,Android开发中实现下载文件通知栏显示进度条
android开发中实现下载文件通知栏显示进度条. 1.使用asynctask异步任务实现,调用publishprogress()方法刷新进度来实现(已优化) public class myasync ...
- 实现在 .net 中使用 HttpClient 下载文件时显示进度
在 .net framework 中,要实现下载文件并显示进度的话,最简单的做法是使用 WebClient 类.订阅 DownloadProgressChanged 事件就行了. 但是很可惜,WebC ...
- ajax实现下载文件进度条及方法详解
javascript使用ajax下载文件进度条实现 <!DOCTYPE html> <html xmlns="http://www.w3.org/1999/xhtml&qu ...
- 使用libcurl开源库和Duilib做的下载文件并显示进度条的小工具
转载:http://blog.csdn.net/mfcing/article/details/43603525 转载:http://blog.csdn.net/infoworld/article/de ...
- Android中如何下载文件并显示下载进度
原文地址:http://jcodecraeer.com/a/anzhuokaifa/androidkaifa/2014/1125/2057.html 这里主要讨论三种方式:AsyncTask.Serv ...
- 利用curl下载文件(进度条显示) 代码片段
在项目中需要用到程序更新的功能,同事介绍说是curl中的开发库很不错,于是下载这个包测试了一下,确实不错.准备正式用到项目中,以下一个例子用于从互联网上抓取一个文件下载到本地,并加上进度条显示,做得挺 ...
- android后台文件下载库,android中如何下载文件并显示下载进度
最近开发中遇到需要下载文件的问题,对于一般的下载来说不用考虑断点续传,不用考虑多个线程,比如下载一个apk之类的,这篇文章讨论的就是这种情形. 这里主要讨论三种方式:AsyncTask.Service ...
- C# Winform下载文件并显示进度条
private void btnDown_Click(object sender, EventArgs e) { DownloadFile("http://localhost:1928/We ...
最新文章
- 在交换机上配置Telnt
- 华为OJ 名字美丽度
- DIB位图(Bitmap)的读取和保存
- 一文读懂云上用户如何灵活应用定制化网络服务
- (五)Docker查看容器ip及指定固定IP
- 团队-科学技术器-模块测试过程
- 两雄争霸:解读MSU2019年度视频编码大赛
- 安装过mysql和p_MAC下安装与配置MySQL
- 使用微信JSSDK自定义微信分享标题、描述、和图标
- 桌面支持--WIN7任务栏上EXCEL的图标右键菜单上没有了最近打开的文档目录
- 「版本升级」MyEclipse CI 2018.12.0正式发布
- [导入]在windows下建立的自己cvsnt服务器
- 网页版QQ、MSN等等聊天工具web版大全
- 菜鸟学R语言(方差分析)
- sqlserver pivot 动态行转列且一行转多列的解决方案
- 盘古石杯电子取证比赛WP
- orcle plsql 列类型 BLOB与CLOB的互转,RAW
- 国产智多晶FPGA基于Verilog的设计开发流程
- android 7.1快捷方式App Shortcuts
- vue3.x +Cesium Cesium 鼠标交互,鼠标点击拾取对象等(五)