LinearLayout progresslayout = (LinearLayout) lftr.inflate(
R.layout.op_down_probar, null);
layout.addView(progresslayout);
bar = (ProgressBar) progresslayout
.findViewById(R.id.downloadProgressBar);
void download() {
new Thread(runnable).start();
}
private void sendMsg(int flag)
{
Message msg = new Message();
msg.what = flag;
handler.sendMessage(msg);
}
Runnable runnable = new Runnable() {
String rootPath = "i.work";
@Override
public void run() {
try {
URL url = new URL(HttpUtil.BASE_URL + "/assets/" + optiondir);
HttpURLConnection connection = (HttpURLConnection) url
.openConnection();
filesize = connection.getContentLength();
InputStream in = connection.getInputStream();
File radio = new File(sdCardPath + rootPath + optiondir);
radio.createNewFile();
OutputStream out = new FileOutputStream(radio);
byte[] buffer = new byte[1024];
int length;
sendMsg(0);
do {
// 循环读取
int numread = in.read(buffer);
if (numread == -1) {
break;
}
out.write(buffer, 0, numread);
downloadfilesize += numread;
sendMsg(1);
} while (true);
sendMsg(2);
out.flush();
out.close();
in.close();
} catch (MalformedURLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
};
Handler handler = new Handler() {
@Override
public void handleMessage(Message msg) {
switch(msg.what){
case 0:
bar.setMax(filesize);
break;
case 1:
bar.setProgress(downloadfilesize);
break;
case 2:
Toast.makeText(OptionsToDo.this, "文件下载完成", 1).show();
break;
}
}
};
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
android:id="@+id/downloadProgressBarLayout" >
<ProgressBar
android:id="@+id/downloadProgressBar"
style="?android:attr/progressBarStyleHorizontal"
android:layout_width="match_parent"
android:layout_height="wrap_content" />
</LinearLayout>