Android多文件下载_带进度条批量下载例子
2014-11-07 10:52:11  By: shinyuu

在Android项目开发中很多时候需要下载的多个文件、当然下载的时候还得有进度条、这样才显得我们的程序够专业、本文呢就来为大家讲解一下、怎么样实现多文件带进度条的下载、本例子主要实现了把多张图片下载到本地、然后显示到界面上面、大家可以根据自己的项目需求更新下载的内容、但是实现的原理都是一样的、都是通过AsyncTask来实现的、我以前也写过一篇关于AsyncTask下载文件并储存到本地的文章、大家也可以看看

使用AsyneTask下载文件: http://dwtedx.com/itshare_161.html

下面进入今天的正题、还是先一起来看看运行效果吧

Android多文件带进度条下载

下载文件的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的留言板)

感谢你的访问、祝你生活愉快、工作顺心、欢迎常来逛逛


快速评论


技术评论

  • 该技术还没有评论、赶快抢沙发吧...
DD记账
top
+