package com.example.downloaddemo1409g;
import java.io.File;
import com.lidroid.xutils.HttpUtils;
import com.lidroid.xutils.exception.HttpException;
import com.lidroid.xutils.http.HttpHandler;
import com.lidroid.xutils.http.ResponseInfo;
import com.lidroid.xutils.http.callback.RequestCallBack;
import android.app.Activity;
import android.os.Bundle;
import android.text.format.Formatter;
import android.view.View;
import android.widget.ProgressBar;
import android.widget.TextView;
public class MainActivity extends Activity {
private static final String URL = "http://dldir1.qq.com/qqfile/qq/QQ8.4/18380/QQ8.4.exe";
// 用于显示 下载量/总的大小
private TextView mTv;
// 进度条
private ProgressBar mPb;
private long mTotal;//文件总大小
//HttpUtils相关
private HttpUtils mHttp;
private HttpHandler<File> mDownloadHandler;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
// 创建HttpUtils对象
mHttp = new HttpUtils();
// 查找view
initView();
// 添加事件
initEvent();
// 开始下载
startDownload();
}
private void initEvent() {
mTv.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
boolean isCancelled = mDownloadHandler.isCancelled();
if (isCancelled) {
// 暂停状态时,点击继续下载
startDownload();
} else {
// 正在下载状态时,点击后取消下载
mDownloadHandler.cancel();
}
}
});
}
private void initView() {
mTv = (TextView) findViewById(R.id.tv);
mPb = (ProgressBar) findViewById(R.id.pb);
// 设置最大值100
mPb.setMax(100);
}
private void startDownload() {
mDownloadHandler = mHttp.download(URL, "/mnt/sdcard/qq.exe", true, true, new RequestCallBack<File>() {
@Override
public void onLoading(long total, long current, boolean isUploading) {
mTotal = total;
// 下载过程中
String totalSize = Formatter.formatFileSize(MainActivity.this, total);
// 格式化文件大小
String currentSize = Formatter.formatFileSize(MainActivity.this, current);
// 显示 下载量/总的大小
mTv.setText(currentSize + "/" + totalSize);
// 计算并显示进度值
int percent = (int) (current * 100 / total);
mPb.setProgress(percent);
}
@Override
public void onSuccess(ResponseInfo<File> responseInfo) {
// 下载成功
if (responseInfo.result.length() == mTotal) {
mTv.setText("下载完成");
}
}
@Override
public void onFailure(HttpException error, String msg) {
// 下载失败
mTv.setText("下载失败");
}
});
}
}
下载状态
最新推荐文章于 2021-07-15 17:07:18 发布