时间:2015-01-19 来源:

Android学习笔记之AsyncTask实现文件下载任务 【综合】

(1)该文件下载主要演示异步任务下载图片

(5)显示带刻度条的文件下载:

(2)布局代码如下:一个ImageView用于存放下载的图片网页外包接活,Button用于开始异步任务下载

package com.example.asynctask_download; import java.io.IOException; import org.apache.http.HttpResponse; import org.apache.http.client.ClientProtocolException; import org.apache.http.client.HttpClient; import org.apache.http.client.methods.HttpGet; import org.apache.http.impl.client.DefaultHttpClient; import org.apache.http.util.EntityUtils; import android.app.Activity; import android.app.ProgressDialog; import android.graphics.Bitmap; import android.graphics.BitmapFactory; import android.os.AsyncTask; import android.os.Bundle; import android.view.Menu; import android.view.View; import android.view.View.OnClickListener; import android.widget.Button; import android.widget.ImageView; public class MainActivity extends Activity { private Button button1; private ImageView imageView1; private final String IMAGE_PATH = "http://www.baidu.com/img/bd_logo1.png";// 设置网页图片的地址 private ProgressDialog progressDialog; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); button1 = (Button) this.findViewById(R.id.button1); imageView1 = (ImageView) this.findViewById(R.id.imageView1); /* * 下载进度条的设置 */ progressDialog = new ProgressDialog(this); progressDialog.setTitle("提示"); progressDialog.setCancelable(false); progressDialog.setMessage("正在下载图片,网页外包接活 byte[]> { /* * onPreExecute()方法在后台操作开始前运行在UI线程上 */ @Override protected void onPreExecute() { super.onPreExecute(); progressDialog.show(); } /* * doInBackground方法运行在后台并处理后台操作 */ @Override protected byte[] doInBackground(String... params) { HttpClient httpClient = new DefaultHttpClient(); HttpGet httpGet = new HttpGet(params[0]); byte[] result = null; try { HttpResponse httpResponse = httpClient.execute(httpGet); if (httpResponse.getStatusLine().getStatusCode() == 200) { result = EntityUtils.toByteArray(httpResponse.getEntity()); } } catch (ClientProtocolException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } finally { httpClient.getConnectionManager().shutdown(); } return result; } @Override protected void onProgressUpdate(Integer... values) { super.onProgressUpdate(values); } /* * 一旦后台操作完毕,div+css报价 menu); return true; } } 结果:

package com.example.asynctask_download; import java.io.ByteArrayOutputStream; import java.io.IOException; import java.io.InputStream; import org.apache.http.HttpResponse; import org.apache.http.client.ClientProtocolException; import org.apache.http.client.HttpClient; import org.apache.http.client.methods.HttpGet; import org.apache.http.impl.client.DefaultHttpClient; import org.apache.http.util.EntityUtils; import android.R.integer; import android.app.Activity; import android.app.ProgressDialog; import android.graphics.Bitmap; import android.graphics.BitmapFactory; import android.os.AsyncTask; import android.os.Bundle; import android.view.Menu; import android.view.View; import android.view.View.OnClickListener; import android.widget.Button; import android.widget.ImageView; public class MainActivity extends Activity { private Button button1; private ImageView imageView1; private final String IMAGE_PATH = "http://img.daimg.com/uploads/allimg/150114/3-150114151438.jpg";// 设置网页图片的地址 private ProgressDialog progressDialog; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); button1 = (Button) this.findViewById(R.id.button1); imageView1 = (ImageView) this.findViewById(R.id.imageView1); /* * 下载进度条的设置 */ progressDialog = new ProgressDialog(this); progressDialog.setTitle("提示"); progressDialog.setCancelable(false); progressDialog.setMessage("正在下载图片,psd转html Integer, byte[]> { /* * onPreExecute()方法在后台操作开始前运行在UI线程上 */ @Override protected void onPreExecute() { super.onPreExecute(); progressDialog.show(); } /* * doInBackground方法运行在后台并处理后台操作 */ @Override protected byte[] doInBackground(String... params) { HttpClient httpClient = new DefaultHttpClient(); HttpGet httpGet = new HttpGet(params[0]); // 第一个参数即是传入的文件地址 byte[] result = null; InputStream inputStream = null; // 文件流 ByteArrayOutputStream outputStream = new ByteArrayOutputStream(); try { HttpResponse httpResponse = httpClient.execute(httpGet); long file_length = httpResponse.getEntity().getContentLength();// 文件总长度 int total_length = 0; byte[] data = new byte[1024]; int len = 0; if (httpResponse.getStatusLine().getStatusCode() == 200) { // result = // EntityUtils.toByteArray(httpResponse.getEntity()); inputStream = httpResponse.getEntity().getContent(); while ((len = inputStream.read(data)) != -1) { total_length += len; // 产生刻度,网页外包接活进度 int progress_value = (int) ((total_length / (float) file_length) * 100); publishProgress(progress_value); // 发布刻度单位 outputStream.write(data, len); } } result = outputStream.toByteArray(); } catch (ClientProtocolException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } finally { httpClient.getConnectionManager().shutdown(); } return result; } @Override protected void onProgressUpdate(Integer... values) { super.onProgressUpdate(values); progressDialog.setProgress(values[0]); } /* * 一旦后台操作完毕承接网页制作, 0, menu); return true; } }

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" android:paddingBottom="@dimen/activity_vertical_margin" android:paddingLeft="@dimen/activity_horizontal_margin" android:paddingRight="@dimen/activity_horizontal_margin" android:paddingTop="@dimen/activity_vertical_margin" tools:context=".MainActivity" > <ImageView android:id="@+id/imageView1" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_alignParentLeft="true" android:layout_alignParentTop="true" android:layout_marginLeft="141dp" android:layout_marginTop="135dp" /> <Button android:id="@+id/button1" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_alignParentBottom="true" android:layout_alignRight="@+id/imageView1" android:layout_marginBottom="80dp" android:text="网页下载图片" /> </RelativeLayout> (3)控制类

点击次数:8824
作者:
web前端行业资讯
Web new NewsList
微软发布WindowsServerBuild17074更新 ,,2018年01月18日凭借一个AI小功能,这款Google应用冲上苹果AppStore榜首 ,,2018年01月18日百度数据可视化实验室正式成立,发布深度学习可视化平台VisualDL ,,2018年01月18日OpenAI开源最新工具包,模型增大10倍只需额外增加20%计算时间 ,,2018年01月18日百度手机输入法8.0正式发布:支持多人语音速记 ,,2018年01月18日CSDN宣布收购TinyMind团队并升级为AI社区 ,,2018年01月18日甲骨文发布补丁修复英特尔芯片漏洞造成的问题 ,,2018年01月18日权威!官方发布CPU熔断和幽灵漏洞防范指引:附补丁下载 ,,2018年01月18日Oracle宣布新的JavaChampions ,,2018年01月18日Fedora28壁纸征集活动现已开幕:将持续至2月13日 ,,2018年01月18日苹果WebKit团队发布Speedometer2.0网页响应测试工具 ,,2018年01月18日百度输入法8.0后天发布:全感官AI输入 ,,2018年01月18日腾讯和乐高合作:共同研发智能玩具、游戏 ,,2018年01月18日HomePod上市日益临近智能音箱市场吸引力越来越大 ,,2018年01月18日英特尔公布修补漏洞后PC性能数据:8代CPU影响最小 ,,2018年01月18日云存储公司Dropbox秘密提交IPO申请估值超百亿美元 ,,2018年01月18日iPod之父:防手机上瘾无技术难度苹果谷歌应承担责任 ,,2018年01月18日芯片不安全英特尔云客户考虑转用AMD等对手处理器 ,,2018年01月18日2018年Java展望 ,,2018年01月18日区块链有多火?快播流量矿石遭20多万人疯抢 ,,2018年01月18日Intel搞定神经拟态芯片:模拟人类大脑、自主学习 ,,2018年01月18日阿里巴巴发布IoTConnect开放连接协议,盼推动语音互动入口普及 ,,2018年01月18日区块链火了,全球大佬们怎么看? ,,2018年01月18日Facebook正测试新功能主推本地新闻资讯 ,,2018年01月18日在GooglePlay中发现使用Kotlin开发的安卓恶意软件 ,,2018年01月18日VisualStudio201715.6预览版本2,增加新功能 ,,2018年01月18日百度陆奇:AI是5G最好的加速器 ,,2018年01月18日PinterestCEO:不同于谷歌和Facebook,我们走了第三条路 ,,2018年01月18日腾讯加码区块链项目已悄然注册“以太锁”商标 ,,2018年01月18日3D打印脑组织?科学家正在向这一目标正在前进 ,,2018年01月18日js实现在页面上弹出蒙板技巧简单实用2014年01月29日【POJ3237】Tree树链剖分 【编程语言】2014年11月26日【leetcode】23MergekSortedLists 【移动开发】2015年01月19日HDU5375 【Web前端】2015年08月15日浅析新站如何优化才能被正常收录2014年01月28日14_Android中Service的使用,关于广播接收者的说明【Web前端】2015年07月16日批处理删除今天以前的同文件下的TXT文件 【移动开发】2015年09月01日离开诺基亚:MeeGo悲情重生新公司押宝中国 ,,2016年07月24日屌丝的逆袭和互联网+时代【综合】2015年03月24日JSP教程(六)-怎么在JSP中跳转到别一页面2014年01月29日纯css实现苹果表盘动画 【移动开发】2015年07月08日OpenGL图形接口,GLEW1.8.0发布 ,,2016年07月24日如何设置Matlab输出到Word中图片的大小【编程语言】2014年12月12日把英语踩在脚下的10条黄金准则2014年01月29日Android集成友盟社会化分享功能【编程语言】2015年03月09日Python使用list实现队列(基于class,包含迭代器) 【综合】2015年02月02日【LeetCode-面试算法经典-Java实现】【004-MedianofTwoSortedArrays(两个排序数组的中位数)】 【移动开发】2015年07月23日Maxwin-zXListView-Android(下拉刷新上拉加载)源码解析(一)【编程语言】2015年05月27日jstat分析JVM内存【架构设计】2015年02月11日u3d设计技巧之UI避免Find 【Web前端】2015年04月29日Hibernate的映射机制 【编程语言】2014年12月09日hdojTextReverse【编程语言】2015年07月27日FZU1692Keyproblem(构造矩阵+矩阵快速幂) 【Web前端】2015年09月10日学学术排名”结果显示:美英大学的优势仍然非常明显【Web前端】2015年02月09日win7+ubuntu14.04双系统安装 【编程语言】2015年01月12日iosNSScanner扫描字符串获取相应的需要的字符串 【移动开发】2015年07月22日jquery.pagination+JSON动态无刷新分页实现代码2014年01月29日DOS选项跳转实现、dos+bcp双击导入导出数据【互联网】2014年11月06日继iptables之后的新一代包过滤框架是nftables 【编程语言】2014年11月27日Java学习系列(二十三)Java面向对象之内部类详解 【移动开发】2015年05月06日
我们保证
We guarantee
> psd效果文件手工切图,保证图片效果最好体积最小利于传输
> 100%手写的HTML(DIV+CSS)编码,绝对符合W3C标准
> 代码精简、css沉余量小、搜索引擎扫描迅速,网页打开快捷
> 应用Css Sprite能够减少HTTP请求数,提高网页性能
> 跨浏览器兼容(IE6、7、8、9,Firefox火狐,Chrome谷歌)