- 浏览: 222681 次
- 性别:
- 来自: 苏州
文章分类
最新评论
-
qjlhlh:
按照背景,secondProgress,Progress三个, ...
Android中自定义SeekBar的背景颜色,进度条颜色,以及滑块的图片 -
a379933101:
lz好人啦,
Android中自定义SeekBar的背景颜色,进度条颜色,以及滑块的图片 -
dengzh:
JavaJ2me 写道为什么播放的不是全屏呢??控件尺寸自己设 ...
Android中VideoView播放当前工程中视频文件的方法 -
JavaJ2me:
为什么播放的不是全屏呢??
Android中VideoView播放当前工程中视频文件的方法 -
dengzh:
JavaJ2me 写道en ,,可以如果不用MediaCont ...
Android中VideoView播放当前工程中视频文件的方法
近几天因为在写高清壁纸的服务器端(基于PHP+MySql),所以好几天没更新博客了,顺便汇报一下高清壁纸的开发进度:服务器端已经改写,原来是一条数据一条数据加,现在是Flash批量上传图片,自动添加数据(这是后台,大家当然看不到啦)。另外,图片数据都放到自己的虚拟主机上了,所以大家可能觉得这几天下载图片特别慢。原来放POCO,速度比较快,但是毕竟是免费的,不放心,怕哪天被人发现了大流量下载,把我帐号图片删了,到时哭都来不及,而且那样也实现不了上传自动添加数据。新版客户端方面,目前多语言以及HVGA支持都已经完成,现在在做下载进度条(因为服务器稍慢,怕有些性子急的同学等不了)。汇报完毕,开始今天学习。今天的这段代码是网上找的,自己做了些小改,通过模拟器测试。文件下载进度条控制(就是为了高清壁纸加个进度条),自己研究了好久,但是进度条只能显示缓存写入文件的进度,不能显示下载进度。找了好久,终于找到一段用的代码,所以记录下来,大家分享。
布局XML:
<?xml version="1.0" encoding="utf-8"?> <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/tv" android:layout_width="fill_parent" android:layout_height="wrap_content" android:text="" /> <ProgressBar android:id="@+id/down_pb" android:layout_width="fill_parent" android:layout_height="wrap_content" android:max="100" style="?android:attr/progressBarStyleHorizontal" /> </LinearLayout>
这个就不用解释了吧,两个控件,一个是TextView,一个是横向条状进度条
程序main.java:
package com.pocketdigi.download; import java.io.FileOutputStream; import java.io.IOException; import java.io.InputStream; import java.net.URL; import java.net.URLConnection; import org.apache.http.client.ClientProtocolException; import android.app.Activity; import android.os.Bundle; import android.os.Handler; import android.os.Message; import android.util.Log; import android.widget.ProgressBar; import android.widget.TextView; import android.widget.Toast; public class main extends Activity { /** Called when the activity is first created. */ ProgressBar pb; TextView tv; int fileSize; int downLoadFileSize; String fileEx,fileNa,filename; private Handler handler = new Handler() { @Override public void handleMessage(Message msg) {//定义一个Handler,用于处理下载线程与UI间通讯 if (!Thread.currentThread().isInterrupted()) { switch (msg.what) { case 0: pb.setMax(fileSize); case 1: pb.setProgress(downLoadFileSize); int result = downLoadFileSize * 100 / fileSize; tv.setText(result + "%"); break; case 2: Toast.makeText(main.this, "文件下载完成", 1).show(); break; case -1: String error = msg.getData().getString("error"); Toast.makeText(main.this, error, 1).show(); break; } } super.handleMessage(msg); } }; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); pb=(ProgressBar)findViewById(R.id.down_pb); tv=(TextView)findViewById(R.id.tv); new Thread(){ public void run(){ try { down_file("http://wallpaper.pocketdigi.com/upload/1/bigImage/1284565196.jpg","/sdcard/"); //下载文件,参数:第一个URL,第二个存放路径 } catch (ClientProtocolException e) { // TODO Auto-generated catch block e.printStackTrace(); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } } }.start(); } public void down_file(String url,String path) throws IOException{ //下载函数 filename=url.substring(url.lastIndexOf("/") + 1); //获取文件名 URL myURL = new URL(url); URLConnection conn = myURL.openConnection(); conn.connect(); InputStream is = conn.getInputStream(); this.fileSize = conn.getContentLength();//根据响应获取文件大小 if (this.fileSize <= 0) throw new RuntimeException("无法获知文件大小 "); if (is == null) throw new RuntimeException("stream is null"); FileOutputStream fos = new FileOutputStream(path+filename); //把数据存入路径+文件名 byte buf[] = new byte[1024]; downLoadFileSize = 0; sendMsg(0); do { //循环读取 int numread = is.read(buf); if (numread == -1) { break; } fos.write(buf, 0, numread); downLoadFileSize += numread; sendMsg(1);//更新进度条 } while (true); sendMsg(2);//通知下载完成 try { is.close(); } catch (Exception ex) { Log.e("tag", "error: " + ex.getMessage(), ex); } } private void sendMsg(int flag) { Message msg = new Message(); msg.what = flag; handler.sendMessage(msg); }
发表评论
-
AlertDialog5种默认Theme对应的样式
2016-06-26 11:03 15603Dialog alertDialog = new Al ... -
Android中Listview的平滑滚动(smoothScrollToPositionFromTop方法)
2016-06-26 10:57 7950项目中有一个需求 用户点击某一个按钮,listview滚 ... -
android编程中设置文本的中文字体
2011-12-29 15:18 2538请将ttf字体文件放入sdcard的文件夹中 text1.s ... -
Json数据中有冒号以及其它符号的处理办法
2011-11-10 15:40 15211当json数据中有冒号或其它符号时,解析会报错 错误数据格式 ... -
(转)Your project contains error(s)... 新创建的android项目
2011-11-07 19:14 31581. 判断模拟器是否创建 如果没有,创建 2. 先delet ... -
android的webview调用javascript函数并得到返回值
2011-09-26 15:07 7310java代码: ProxyBridge pBridge ... -
android开发中处理大图片内存溢出的方法
2011-08-03 16:20 1635尽量使用 BitmapFactory.decodeStrea ... -
android中捕捉menu按键的点击事件
2011-07-29 10:58 8368@Override public boolean o ... -
android 获取手机通讯录信息
2011-07-18 15:15 6379protected void getContactIn ... -
android TextView属性大全(转)
2011-07-12 18:34 5817android:autoLink设置是否当文本为URL链接/e ... -
android WiFi 开关代码
2011-07-08 16:56 2759private WifiMan ... -
ListView.setOnItemClickListener无效问题的解决
2011-06-28 11:23 2844如果ListView中的单个Item的view中存在che ... -
android中读取assets中的文件
2011-06-28 09:42 3441private Bitmap getImageFromA ... -
安装APK文件到Android模拟器
2011-06-22 10:35 3494安装APK文件到Android模拟器 Android手机 ... -
android程序自动安装apk
2011-05-26 16:08 6569<uses-permission android:nam ... -
LinearLayout按下(pressed)或获取焦点(focused)时背景设置不同颜色或图片
2011-05-09 23:30 6626<?xml version="1.0" ... -
sqlite的时间默认值设定
2010-10-16 14:52 1741不能使用getdate()函数 应该用datetime(CU ... -
android中判断数据库表是否已经创建
2010-10-16 12:17 1171create table IF NOT EXISTS tabl ... -
android中使用Thumbnails批量加载sdcard中的缩略图片
2010-10-15 10:35 4090研究了一上午,终于可以读取缩略图了。 这样得到的是卡中所有图 ... -
将图片转化为缩略图再加载
2010-10-14 08:28 1208stream = new FileInputStream(ne ...
相关推荐
易语言是一种专为中国人设计的编程语言,它的目标是让编程变得简单、直观。FTP(File Transfer Protocol)是互联网...通过学习和理解这个模块,开发者可以深入掌握FTP通信和进度显示的原理,提升自己的易语言编程技能。
3. **带进度的下载**:为了显示下载进度,我们需要知道文件的总大小,并在下载过程中实时更新已下载的字节数。VB中可以使用Async/Await关键字配合异步操作来实现这一目标,或者使用线程和回调函数来更新进度条。 4....
如果脚本需要处理大量文件,可能会结合FINDSTR、COPY或XCOPY命令,同时实时计算并显示已处理文件的数量与总文件数量的比例。 批处理脚本在自动化的日常任务中非常有用,例如批量重命名文件、清理临时文件、备份数据...
在C#编程中,命令行显示处理进度是常见的需求,特别是在执行长时间运行的任务或大量数据处理时,用户界面反馈能够提升用户体验。本篇将详细解释如何在C#命令行环境中实现显示任务完成进度。 首先,我们需要理解...
ProgressBar控件通常用于表示一个操作的进度,例如文件复制、下载或处理数据。它有一个可调整的范围值,可以从最小值到最大值,并且可以设置步长来控制每次增加的数值。在设计时,你可以通过属性设置来调整其外观,...
这些图片通常采用各种图形设计,包括条形进度条、圆形进度环、百分比指示器等形式,旨在清晰地展示加载、上传、下载或其他长时间运行任务的进度。 一、条形进度条 条形进度条是最常见的进度指示器类型,通常由一个...
8. **UI交互**:在Android应用中,下载进度通常会显示在通知栏或者专门的下载界面。开发者需要使用`Notification` API创建下载通知,并更新下载进度。同时,UI界面也需要实时更新下载状态,如暂停、继续、完成或失败...
进度圆圈应该能根据屏幕尺寸自动调整大小,保持比例,以适应不同设备的显示需求。 6. **无障碍性**:为了保证所有用户都能理解进度,尤其是视力障碍的用户,进度圆圈应当遵循WCAG(Web Content Accessibility ...
例如,当后台任务完成一定比例的工作时,可以通过调用接口的方法来更新球形控件的进度。 在具体实现这个控件时,开发者需要考虑性能优化,因为动态的动画可能会对设备性能造成影响。例如,合理地使用硬件加速,避免...
在C#编程中,我们经常使用它来可视化执行长时间任务的进度,如文件上传、下载或处理大量数据。本教程将详细介绍如何在C#中使用ProgressBar控件来显示进度百分比。 首先,我们需要在设计界面中添加一个ProgressBar...
//进度比例,0到1,在本例中我们画65% //需要注意,下面的算法不支持画100%,要按99.99%来画 var percent = n , drawPercent = percent >= 1 ? 0.9999 : percent; //开始计算各点的位置,见后图 //r1是...
3. 更新进度:处理每个块后,模块会计算已处理的字节数占总字节数的比例,从而更新进度条的显示。 4. 写入目标文件:读取的块被写入目标位置,直到整个文件完成移动。 5. 错误处理和中断:模块还应包含错误处理机制...
ProgressBar控件用于显示复制进度,Button则触发文件复制操作。 1. **创建进度条和按钮**: 在设计界面时,将ProgressBar控件拖放到窗体上,并设置其Minimum和Maximum属性为0和100,分别代表进度的开始和结束。...
本项目显然关注的是如何实现这一功能,并且在用户退出应用后,能够保存下载状态,在重新进入应用时继续下载,并更新UI组件显示下载进度。 首先,我们需要理解多线程的概念。在单线程环境下,如果一个任务在执行,...
3. **进度计算与更新**:根据加载任务的复杂性,为每个子任务分配权重,然后在`ProgressChanged`事件中,根据子任务的完成比例更新进度条的`Value`。 4. **反馈信息**:除了进度条,还可以添加文本信息来告知用户...
这个"java 递归拷贝文件显示进度demo"是一个实用的示例,它不仅实现了从一个源目录到目标目录的深度拷贝,而且还提供了进度显示功能,这对于用户来说是一个很好的交互体验。以下是对这个Demo涉及知识点的详细解释: ...
在本教程中,我们将探讨如何使用VC++6.0实现一个文件下载功能,并同时显示下载进度条,这在用户界面设计中是非常重要的,因为它能提供良好的用户体验,让用户了解文件下载的状态。 首先,我们需要理解文件下载的...
在本例中,"progress的进度显示"主要涉及到的是在上传图片到服务器过程中,如何实时更新并展示已上传部分的比例。 一、HTML5的`<progress>`元素 `<progress>`是HTML5引入的一个新标签,用于创建进度条,它可以清晰...
进度下载主要是指在文件下载过程中实时更新显示已下载的部分与总大小的比例,以让用户了解下载状态。实现这一功能主要涉及以下几个步骤: 1. **初始化下载**:在开始下载前,先获取文件尺寸,然后创建一个空的本地...
3. 进度条:为了显示下载进度,我们需要计算已下载的数据量与总数据量的比例,然后转换为百分比。这通常涉及到循环下载数据块,并在每次迭代中更新进度。 4. 多线程或异步IO:在处理大文件下载时,可以考虑使用多...