android 下载进度条代码实现,Android 文件下载进度条的实现
Android 中很多地方都需要用到线程下载。下面我谢了个简单的下载图片的demo。望对你们有到帮助.
首先,配置权限,
在 AndroidManifest.xml里面的application节点下面配置需要用到的权限
权限添加完成,布局如下:
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:orientation="vertical" >
android:id="@+id/btn_1"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:text="点击下载图片"
/>
android:id="@+id/tv"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:text="" />
android:id="@+id/down_pb"
style="?android:attr/progressBarStyleHorizontal"
mce_style="?android:attr/progressBarStyleHorizontal"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:max="100" />
接来下就是写代码了,代码其实很简单,话不多说,我直接上传:
package com.lh.thread;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.net.URL;
import java.net.URLConnection;
import android.app.Activity;
import android.os.Bundle;
import android.os.Handler;
import android.os.Message;
import android.util.Log;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
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 mPb;
TextView mTv;
Button mBtn;
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:
mPb.setMax(fileSize);
case 1:
mPb.setProgress(downLoadFileSize);
int result = downLoadFileSize * 100 / fileSize;
mTv.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);
//初始化控件
mPb = (ProgressBar) findViewById(R.id.down_pb);
mTv = (TextView) findViewById(R.id.tv);
mBtn=(Button) findViewById(R.id.btn_1);
mBtn.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
//启动线程进行下载
new Thread() {
public void run() {
try {
down_file(
"http://att.bbs.duowan.com/forum/201310/23/151916t9kdya2gia0a21la.jpg",
"/sdcard/");
// 下载文件,参数:第一个URL,第二个存放路径
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}.start();
}
});
}
/**
* 此方法描述的是:下载文件并保存
* @param url
* @param path
* @throws IOException void
*/
public void down_file(String url, String path) throws Exception {
Log.i("AAAAAA", "~~~~~~~~~存储路径是"+path);
// 下载函数
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);
}
}好了,进度条下载就完成了
android 下载进度条代码实现,Android 文件下载进度条的实现相关推荐
- java数字时钟代码,Android自定义数字时钟代码,android自定义时钟,package jp.t
Android自定义数字时钟代码,android自定义时钟,package jp.tpackage jp.tsmsogn.digitalclock;import java.util.Calendar; ...
- android自定义侧滑菜单代码,原生Android 侧滑菜单实践(部分)
此为第一个制作侧滑菜单的实践 . 此部分仅仅为部分实践: 仅缺menu的字符串布局,以及需要修改的MainActivity.java文件,也是需要主要修改的地方. 从使用MD设计-进行侧滑菜单的制作( ...
- android 下载apk并自动安装,Android下载apk并自动安装(兼容Android7.0)
1.开启服务下载新版本 View.OnClickListener checkVersion = new View.OnClickListener () { @Override public void ...
- android找回密码界面的代码,《Android项目实战-博学谷》设置密保找回密码
设置密保&找回密码界面 思路 由于设置密保和找回密码两个界面十分相似,代码逻辑也十分相似,因此这两个界面可以使用同一个布局文件和同一个 Activity 来处理,首先导入所需图片资源文件,再创 ...
- android 下载进度条代码实现,Android文件下载进度条的实现代码
搜索热词 main.xml: android:orientation="vertical" android:layout_width="fill_parent" ...
- android studio不能更新代码,解决Android Studio 和 Android SDK Manager 无法在线更新的问题....
升级时提示 Connection failed. Please check your network connection and try again 修改安装目录下bin\studio.exe.vm ...
- android系统自动休眠代码流程,Android P 电源管理(4)待机流程
电视遥控器,短端走待机(str待机)流程, 长按是关机,走关机流程,记录下待机流程. 参考博客 待机流程 Android P引入自动待机功能,只有存在WakeLock,wakeup_count就不会为 ...
- android 进退分屏代码策略,Android的分屏模式开发注意事项
android7.0 的API开始有了分屏功能,在测试时注意到主页面在分屏模式下,页面所占比例在增大或者减小的时候都会调用oncreat方法,所以查资料总结一下分屏对页面的生命周期的影响以及开发时的注 ...
- iphone.android下载,如何在iPhone和Android上删除下载
每当您从网站下载文件时,它都会保存在您的设备上,直到您将其删除为止. 无论您使用计算机还是智能手机,内部存储都是有限的,您需要删除设备上的下载以释放空间. iPhone,Android,Windows ...
最新文章
- C Primer Plus_第8章_字符输入输出和输入确认_编程练习
- c++ string 另类写法
- LeetCode题组:第1162题-地图分析
- 【面试必备】javascript操作DOM元素
- struts2 的错误信息: java.net.UnknownHostException: struts.apache.org
- LeetCode 1352. 最后 K 个数的乘积
- 接口请求json解析问题
- layui框架和vue哪个好_小颖的前端框架
- html获取手机型号,前端通过js获取手机型号
- It技能图谱(13张)
- DOS窗口的一些简单介绍
- 360浏览器+7654联盟
- Halcon算子实现——Texture_Laws
- HCIP2------BGP1
- 腾讯微博qq说说备份导出工具_10年过去了,腾讯微博终于被判了死刑。。。
- StarUML license key
- java计算机毕业设计vue基层社区管理服务网MyBatis+系统+LW文档+源码+调试部署
- ATM机多账号的实现
- 《我们到底应该怎么吃》读书笔记-- 待续
- kvm虚拟机静态和动态迁移
热门文章
- 主数据管理(MDM)的七个最佳实践
- pycharm连接mysql
- 【组原】广州大学计算机组成原理考试部分题+复习资料(2020-2021)
- golang配置export GOPRIVATE拉取私有库代码
- 对不起,Ubuntu 21.04出现了内部错误 解决办法
- cordova报错:ANDROID_SDK_ROOT=undefined (recommended setting)
- JavaFX快速入门完整代码:点击按钮显示当前系统时间示例
- bat批处理启动QQ、微信、企业微信
- flink scala shell命令行使用示例
- 设置nginx开机启动