Android多文件下载_带进度条批量下载例子
2014-11-07 10:52:11 By: shinyuu
在Android项目开发中很多时候需要下载的多个文件、当然下载的时候还得有进度条、这样才显得我们的程序够专业、本文呢就来为大家讲解一下、怎么样实现多文件带进度条的下载、本例子主要实现了把多张图片下载到本地、然后显示到界面上面、大家可以根据自己的项目需求更新下载的内容、但是实现的原理都是一样的、都是通过AsyncTask来实现的、我以前也写过一篇关于AsyncTask下载文件并储存到本地的文章、大家也可以看看
使用AsyneTask下载文件: http://dwtedx.com/itshare_161.html
下面进入今天的正题、还是先一起来看看运行效果吧
下载文件的AsyncTask
private class DownloadTask extends AsyncTask<String, Integer, List<RowItem>> { private Activity context; List<RowItem> rowItems; int taskCount; public DownloadTask(Activity context) { this.context = context; } @Override protected List<RowItem> doInBackground(String... urls) { taskCount = urls.length; rowItems = new ArrayList<RowItem>(); Bitmap map = null; for (String url : urls) { map = downloadImage(url); rowItems.add(new RowItem(map)); } return rowItems; } protected void onProgressUpdate(Integer... progress) { progressDialog.setProgress(progress[0]); if (rowItems != null) { progressDialog.setMessage("Loading " + (rowItems.size() + 1) + "/" + taskCount); } } @Override protected void onPostExecute(List<RowItem> rowItems) { listViewAdapter = new CustomListViewAdapter(context, rowItems); listView.setAdapter(listViewAdapter); progressDialog.dismiss(); } }
下载Image的方法
private Bitmap downloadImage(String urlString) { int count = 0; Bitmap bitmap = null; URL url; InputStream in = null; BufferedOutputStream out = null; try { url = new URL(urlString); URLConnection conn = url.openConnection(); int lengthOfFile = conn.getContentLength(); in = new BufferedInputStream(url.openStream()); ByteArrayOutputStream dataStream = new ByteArrayOutputStream(); out = new BufferedOutputStream(dataStream); byte[] data = new byte[512]; long total = 0L; while ((count = in.read(data)) != -1) { total += count; publishProgress((int) ((total * 100) / lengthOfFile)); out.write(data, 0, count); } out.flush(); BitmapFactory.Options options = new BitmapFactory .Options(); options.inSampleSize = 1; byte[] bytes = dataStream.toByteArray(); bitmap = BitmapFactory.decodeByteArray(bytes , 0, bytes.length); } catch (Exception e) { e.printStackTrace(); } return bitmap; }
当所有的图片下载完成之后、会把下载的所有图片加载到ListView显示出来、这也是效果图上面的第二张的效果
最后贴上源代码下载链接: http://dwtedx.com/download.html?bdkey=s/1eQH3ahG 密码: 19am
若资源对你有帮助、浏览后有很大收获、不妨小额打赏我一下、你的鼓励是维持我不断写博客最大动力
想获取DD博客最新代码、你可以扫描下方的二维码、关注DD博客微信公众号(ddblogs)
或者你也可以关注我的新浪微博、了解DD博客的最新动态:DD博客官方微博(dwtedx的微博)
如对资源有任何疑问或觉得仍然有很大的改善空间、可以对该博文进行评论、希望不吝赐教
为保证及时回复、可以使用博客留言板给我留言: DD博客留言板(dwtedx的留言板)
感谢你的访问、祝你生活愉快、工作顺心、欢迎常来逛逛