- 浏览: 82987 次
- 性别:
- 来自: 天津
文章分类
- 全部博客 (110)
- java (110)
- Comparing PHP Frameworks ( Symfony (1)
- CakePHP (1)
- YII and CodeIgniter) (1)
- spring定时任务的实现 (1)
- 获得一个节点对象的节点类型 (1)
- SWT 文本框Text通过GC重绘改变边框颜色 (1)
- 常用命令收集(系统设置) (1)
- openlayers 应用Google图层你必须做的 (1)
- Shell Sort in Java (1)
- Java网络编程 (1)
- 删除more里面的Edit (1)
- Android颜色选择器 (1)
- Linux安全配置步骤简述 (1)
- 职场官话 (1)
- TOMCAT常用优化 (1)
- 2008 ==> 2009 (1)
- 01_Android介绍 (1)
- HTML特殊字符 (1)
- 终于完成一个最重要的任务——找工作 (1)
- java 加密算法 base64 (1)
- 《南方周末》《南方日报》《新京报》《南方体育》等报纸在线阅读 (1)
- 由ORM框架设计看到微软与苹果的最大差别 (1)
- 通过发微博控制电脑的程序源码 (1)
- flex入门 (1)
- JS合并单元格、JavaScript单元格合并 (1)
- 各种常用编译开关位置 (1)
- 单一入口应用程序概述 (1)
- [转]Cocoa中回调delegate的方法时判断delegate是否已经被释放 (1)
- java简单的通用ajax分页方法 (1)
- /dev/shm放/tmp (1)
- Java中HashMap排序和遍历 . (1)
- Chrome+SwitchySharp+myentunnel+SSH (1)
- LINUX-网卡Bond (1)
最新评论
-
ken890202:
java简单的通用ajax分页方法 -
hanmiao:
真够乱的,什么都看不清。
Linux安全配置步骤简述 -
houxinyou:
说一下我自己的想法.苹果只是做一款相同的东西,然后是完善.有什 ...
由ORM框架设计看到微软与苹果的最大差别 -
delphixp:
微软技术方案很多?。。。。Java 系统笑而不语。。。
由ORM框架设计看到微软与苹果的最大差别 -
huchiwei:
同意楼上说法。这代码....怎么看!!
web应用dao层的开发经验小结
做了个小例子,是关于android文件下载过程中进度条的实现,有些地方还有不当的地方,其中文件下载部分是参考mars老师的代码的,有兴趣可以去关注一下mars老师,http://www.mars-droid.com
代码写的比较乱,建议去看看mars老师的视频。
多话不说直接上代码了:
main.xml页面布局文件:
fileutils.java
下面是运行的结果图:
<br><img src="http://dl.iteye.com/upload/attachment/542902/436e7a0a-9d1e-382d-acfe-ec03476fb174.jpg" alt=""><br> 正在下载:
<br><img src="http://dl.iteye.com/upload/attachment/542904/5c500466-85e0-31d4-aa07-507d68d74e93.jpg" alt=""><br> 下载完成之后,我们在sdcard/music可以看到f.mp3文件
<br><img src="http://dl.iteye.com/upload/attachment/542907/728e1b4e-8dc4-36cf-ae1a-b4010f60f635.jpg" alt="" width="627" height="340"><br> 下面附上源码,可以自己修改,在例子中我是通过直接弹出的方式显示进度条的,这样在下载的时候我们就不能做其他的事情了,我们可以在布局文件中显示进度条,这样我们在下载的时候可以在文本框中输入一下内容,点击测试按钮之后文本框中的内容可以在上面的textview中显示出来。
<span style="color: #ff0000;">如果运行本例子,需要更改下载的url地址,我用的是百度的音乐下载,在测试中发现百度每次生成的连接只能下载一次。</span>
代码写的比较乱,建议去看看mars老师的视频。
多话不说直接上代码了:
main.xml页面布局文件:
<linearlayout xmlns:android="http://schemas.android.com/apk/res/android" android:orientation="vertical" android:layout_width="fill_parent" android:layout_height="fill_parent" ><textview android:id="@+id/textview" android:layout_width="fill_parent" android:layout_height="wrap_content" android:text="@string/hello" /><button android:id="@+id/downloadtextbutton" android:layout_width="fill_parent" android:layout_height="wrap_content" android:text="下载文本文件"/><button android:id="@+id/downloadmp3button" android:layout_width="fill_parent" android:layout_height="wrap_content" android:text="下载mp3文件"/><edittext android:id="@+id/edittext" android:layout_width="fill_parent" android:layout_height="wrap_content" android:hint="请出输入文字!" android:lines="3"/><button android:id="@+id/textbutton" android:layout_width="fill_parent" android:layout_height="wrap_content" android:text="测试"/></linearlayout>downloadactivity
public class downloadactivity extends activity { public static final int dialog_download_progress = 0;// public int filesize=0;// public int downloadfilesize=0; private textview textview; private button downloadtextbutton; private button downloadmp3button; private button textbutton; private edittext edittext; private progressdialog dialog = null; /** called when the activity is first created. */ @override public void oncreate(bundle savedinstancestate) { super.oncreate(savedinstancestate); setcontentview(r.layout.main); downloadtextbutton = (button) this.findviewbyid(r.id.downloadtextbutton); downloadmp3button = (button) this.findviewbyid(r.id.downloadmp3button); //添加监听 downloadtextbutton.setonclicklistener(new downloadtextbuttonlistener()); downloadmp3button.setonclicklistener(new downloadmp3buttonlistener()); textview = (textview) this.findviewbyid(r.id.textview); edittext = (edittext) this.findviewbyid(r.id.edittext); textbutton = (button) this.findviewbyid(r.id.textbutton); textbutton.setonclicklistener(new onclicklistener(){ @override public void onclick(view v) { textview.settext(edittext.gettext().tostring()); toast.maketext(downloadactivity.this, textview.gettext().tostring(), toast.length_long); } }); } @override protected dialog oncreatedialog(int id) { switch(id){ case dialog_download_progress: dialog = new progressdialog(this); dialog.setmessage("downloading…"); dialog.setprogressstyle(progressdialog.style_horizontal); dialog.setcancelable(false); dialog.show(); return dialog; default: return null; } } private handler handler = new handler(){ @override public void handlemessage(message msg) { if(!thread.currentthread().isinterrupted()){ switch(msg.what){ case 0: dialog.setmax(msg.arg1); break; case 1: dialog.setprogress(msg.arg1); break; case 2: dialog.dismiss(); break; case -1: string error = msg.getdata().getstring("error"); toast.maketext(downloadactivity.this, error, 1).show(); break; } } super.handlemessage(msg); } }; class downloadtextbuttonlistener implements onclicklistener{ /* (non-javadoc) * @see android.view.view.onclicklistener#onclick(android.view.view) */ @override public void onclick(view v) { // todo auto-generated method stub// httpdownloader httpdownloader = new httpdownloader();// string text = httpdownloader.download("http://zhangmenshiting.baidu.com/data/music/5789992/%e8%8d%b7%e5%a1%98%e6%9c%88%e8%89%b2.mp3?xcode=732ac4f76aeff611f08f3bb5c5f0aafe"); } } class downloadmp3buttonlistener implements onclicklistener{ /* (non-javadoc) * @see android.view.view.onclicklistener#onclick(android.view.view) */ @override public void onclick(view v) { //打开进度条 showdialog(dialog_download_progress); thread t = new thread(runnable); t.start(); } } runnable runnable = new runnable(){ @override public void run() { httpdownloader httpdownloader = new httpdownloader(); int result = httpdownloader.download(downloadactivity.this,"http://zhangmenshiting.baidu.com/data/music/5935874/%e6%ba%9c%e6%ba%9c%e7%9a%84%e6%83%85%e6%ad%8c.mp3?xcode=54e0a53865de98f9ba842c53eb1bf508", "music/", "e.mp3"); system.out.println(result); string str =null; if(result == 0){ str = "成功!"; }else if(result == 1){ str = "文件已存在!"; }else{ str = "失败!"; } // toast.maketext(downloadactivity.this, "下载结果"+str, toast.length_long).show(); } }; public void sendmsg(int flag,int value){ message message = new message(); message.what = flag; message.arg1 = value; handler.sendmessage(message); } }下面两个为下载的工具类:
fileutils.java
public class fileutils { private string sdpath; /** * */ public fileutils() { // todo auto-generated constructor stub //获得当前外部存储设备的目录 sdpath = environment.getexternalstoragedirectory()+"/"; } /** * 在sd卡上创建文件 * @param filename * @return */ public file createsdfile(string filename){ file file = new file(sdpath + filename); try { file.createnewfile(); } catch (ioexception e) { // todo auto-generated catch block e.printstacktrace(); } return file; } /** * 创建sd卡目录 * @param dirname * @return */ public file createsddir(string dirname){ file file = new file(sdpath + dirname); file.mkdir(); return file; } public boolean isfileexist(string filename){ file file = new file(sdpath + filename); return file.exists(); } public file writetosdfrominput(context context,string path,string filename,inputstream input){ file file = null; outputstream output = null; try { createsddir(path); file = createsdfile(path + filename); output = new fileoutputstream(file); byte[] buffer = new byte[4 * 1024]; int total = 0; while((input.read(buffer)) != -1){ total = total + buffer.length; output.write(buffer); //更新下载进度条 ((downloadactivity)context).sendmsg(1,total); } output.flush(); } catch (filenotfoundexception e) { // todo auto-generated catch block e.printstacktrace(); } catch (ioexception e) { // todo auto-generated catch block e.printstacktrace(); }finally{ try { output.close(); } catch (ioexception e) { // todo auto-generated catch block e.printstacktrace(); } } //下载完成 ((downloadactivity)context).sendmsg(2,0); return file; } }httpdownloader.java
public class httpdownloader { private url url = null; /** * 根据url下载文件,前提是文件当中的内容为文本,返回值就是文件当中的内容 * @param urlstr * @return */ public string download(string urlstr){ stringbuffer buffer = new stringbuffer(); string line = null; bufferedreader reader = null; try { url = new url(urlstr); try { httpurlconnection conn = (httpurlconnection) url.openconnection(); reader = new bufferedreader(new inputstreamreader(conn.getinputstream())); while ((line = reader.readline()) != null) { buffer.append(line); } } catch (ioexception e) { log.e("io", "httpurlconnection -> ioexception"); e.printstacktrace(); } } catch (malformedurlexception e) { log.e("url","url -> malformedurlexception"); e.printstacktrace(); }finally{ try { reader.close(); } catch (ioexception e) { // todo auto-generated catch block e.printstacktrace(); } } return buffer.tostring(); } /** * 该函数返回整形: -1代表下载出错,0代表下载成功,1代表下载文件已存在 * @param urlstr * @param path * @param filename * @return */ public int download(context context,string urlstr,string path,string filename){ inputstream input = null; fileutils fileutils = new fileutils(); if(fileutils.isfileexist(path + filename)){ ((downloadactivity)context).sendmsg(2,0); return 1; }else{ try { input = getinputstreamfromurl(context,urlstr); } catch (ioexception e) { // todo auto-generated catch block e.printstacktrace(); } file resultfile = fileutils.writetosdfrominput(context,path, filename, input); if(resultfile == null){ return -1; } } return 0; } public inputstream getinputstreamfromurl(context context,string urlstr) throws ioexception{ url = new url(urlstr); httpurlconnection conn = (httpurlconnection) url.openconnection(); inputstream s = conn.getinputstream(); ((downloadactivity)context).sendmsg(0,conn.getcontentlength()); return s; }}别忘记添加:
<uses-permission android:name="android.permission.internet"/> <uses-permission android:name="android.permission.write_external_storage" />
下面是运行的结果图:
<br><img src="http://dl.iteye.com/upload/attachment/542902/436e7a0a-9d1e-382d-acfe-ec03476fb174.jpg" alt=""><br> 正在下载:
<br><img src="http://dl.iteye.com/upload/attachment/542904/5c500466-85e0-31d4-aa07-507d68d74e93.jpg" alt=""><br> 下载完成之后,我们在sdcard/music可以看到f.mp3文件
<br><img src="http://dl.iteye.com/upload/attachment/542907/728e1b4e-8dc4-36cf-ae1a-b4010f60f635.jpg" alt="" width="627" height="340"><br> 下面附上源码,可以自己修改,在例子中我是通过直接弹出的方式显示进度条的,这样在下载的时候我们就不能做其他的事情了,我们可以在布局文件中显示进度条,这样我们在下载的时候可以在文本框中输入一下内容,点击测试按钮之后文本框中的内容可以在上面的textview中显示出来。
<span style="color: #ff0000;">如果运行本例子,需要更改下载的url地址,我用的是百度的音乐下载,在测试中发现百度每次生成的连接只能下载一次。</span>
发表评论
-
LINUX-网卡Bond
2012-02-08 15:22 846网卡bond是通过把多张网卡绑定为一个逻辑网卡,实现本 ... -
Chrome+SwitchySharp+myentunnel+SSH
2012-02-04 17:14 1854? <p style="margin ... -
Java中HashMap排序和遍历 .
2012-02-03 10:29 1911<div id="article_co ... -
/dev/shm放/tmp
2012-02-02 17:14 881呵呵,有时候不懂装懂的人挺搞笑的哈 转http://z ... -
java简单的通用ajax分页方法
2012-02-02 12:44 1756发表一个自己常用的分页的通用代码,实现了ajax分页。 ... -
[转]Cocoa中回调delegate的方法时判断delegate是否已经被释放
2012-01-31 16:58 1021<p>http://pingguohe.n ... -
单一入口应用程序概述
2012-01-11 14:03 649什么是单一入口应用程序? 在解释什么是单一入口应用 ... -
各种常用编译开关位置
2012-01-11 12:54 658vendor\third-party\products ... -
JS合并单元格、JavaScript单元格合并
2011-12-28 14:08 1062<span style="font-f ... -
flex入门
2011-12-28 12:23 819<span style="fon ... -
通过发微博控制电脑的程序源码
2011-12-20 12:29 1194前段时间看群里挺多讨论 微博api,正好前几天看到有个 ... -
由ORM框架设计看到微软与苹果的最大差别
2011-12-20 09:59 1342一不小心加入水 ... -
《南方周末》《南方日报》《新京报》《南方体育》等报纸在线阅读
2011-12-15 11:04 1220我经常到南方报业提供的网址下载他们出版的报纸看,今天突 ... -
java 加密算法 base64
2011-12-14 17:58 852<span style="color: ... -
终于完成一个最重要的任务——找工作
2011-12-14 14:54 594</span></span>& ... -
HTML特殊字符
2011-12-14 10:54 660最近在做某种模拟器上的网页的显示,需要考虑HTML特殊 ... -
01_Android介绍
2011-12-13 10:44 569? <h4 style="margin ... -
2008 ==> 2009
2011-12-13 10:39 556发现时间过的真的很快,这么快,又是新的一年了。特地翻出 ... -
TOMCAT常用优化
2011-12-12 16:04 635<p class="MsoNorm ... -
职场官话
2011-12-12 12:29 530官场充斥着官话,职场也满是官话,可能你没有注意到而已。 ...
相关推荐
\Android文件下载进度条的实现.txt\Android文件下载进度条的实现.txt
实现文件的复制 及 进度条的显示 progressdialog
Android实现多文件的下载,显示进度条
这是本人初学android制作的一个下载单个文件实现进度条时时更新
我们今天开始学习的是下载...文件下载进度条控制(就是为了高清壁纸加个进度条),自己研究了好久,但是进度条只能显示缓存写入文件的进度,不能显示下载进度。找了好久,终于找到一段用的代码,所以记录下来,大家分享
后台service实现文件下载,通过广播前台显示进度,文件下载方法就不写进去了,网上都有
本文实例为大家分享了android实现音乐播放器进度条效果的具体代码,供大家参考,具体内容如下 效果图 依赖3个对象 MediaPlayer:实现音乐播放,暂停,缓冲。 SeekBar:滑动的进度条。 java.util.Timer:定时器,时时...
最近做滴文件上传,可以实现单文件上传还有进度条的百分比显示哈,给大家分享下
一个简单实现的自定义圆环进度条,可使用于文件的上传下载图片加载等地方.
Android 使用HttpClient和第三方MiME文件上传类库,实现文件上传带进度条。 注:这个是自己写的,亲测没有问题。
本篇文章主要介绍了android中实现OkHttp下载文件并带进度条,OkHttp是比较火的网络框架,它支持同步与异步请求,支持缓存,可以拦截,更方便下载大文件与上传文件的操作,有兴趣的可以了解一下
通过在style文件中进行配置,实现了带文字竖直进度条 类似电量显示的功能。
实现一个带进度条的下载: 1.下载前获得文件的总长 2.下载的过程中对已经下载的长度进行累加,不断发送消息更新进度条 3.下载完成后发送的消息
基于HttpClient的轻量级封装,并提供了文件上传进度显示的接口,直接对httpmime源码进行改造,不包含任何第三方jar包。
基于zip4j开源框架实现android解压带有密码的zip文件(进度条显示),项目中有jar包,非常好用。解压、压缩、压缩添加密码、解压带有密码的zip都可以使用。
主要介绍了Android实现文件上传和下载倒计时功能的圆形进度条,需要的朋友可以参考下
主要为大家详细介绍了Android实现百分比下载进度条效果,具有一定的参考价值,感兴趣的小伙伴们可以参考一下