日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 运维知识 > Android >内容正文

Android

android 進度條_Android更新下載進度條 | 學步園

發(fā)布時(shí)間:2025/1/21 Android 35 豆豆
生活随笔 收集整理的這篇文章主要介紹了 android 進度條_Android更新下載進度條 | 學步園 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

下載文件會(huì)阻塞UI主線程,所以需要new一個(gè)新線程來(lái)執(zhí)行下載操作,通過(guò)handler執(zhí)行更新UI進(jìn)度條操作。代碼如下:

public class AndroidTest extends Activity {

private static final String TAG = "AndroidTest";

private ProgressBar progressBar = null;

private Button startButton = null;

private EditText filenameText = null;

private MyHandler handler = null;

private Message message = null;

private boolean flag = true;

private int size = 1;

private int hasRead = 0;

private int len = 0;

private byte buffer[] = new byte[1024*4];

private int index = 0;

@Override

public void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

setContentView(R.layout.main);

progressBar = (ProgressBar)findViewById(R.id.progress_horizontal);

startButton = (Button)findViewById(R.id.mybutton);

startButton.setOnClickListener(new ButtonClick());

filenameText = (EditText)findViewById(R.id.fileNameID);

handler = new MyHandler();

}

public boolean downloadFile(final String urlStr, final String filename) {

new Thread(new Runnable(){

public void run() {

try {

URL url = new URL(urlStr);

HttpURLConnection connection = (HttpURLConnection)url.openConnection();

size = connection.getContentLength();

InputStream inputStream = connection.getInputStream();

OutputStream outputStream = new FileOutputStream(Environment.getExternalStorageDirectory()+"/"+filename);

while((len=inputStream.read(buffer))!=-1){

outputStream.write(buffer);

hasRead+=len;

index = (int)(hasRead*100)/size;

message = new Message();

message.what = 1;

handler.sendMessage(message);

Log.d(TAG, "index = " + index);

System.out.println("has = "+hasRead+" size = "+size+" index = "+index);

}

inputStream.close();

outputStream.close();

} catch (Exception e) {

flag = false;

e.printStackTrace();

}

}

}).start();

return flag;

}

class ButtonClick implements OnClickListener {

public void onClick(View v) {

String url = filenameText.getText().toString();

String filename = url.substring(url.lastIndexOf('/') + 1);

Log.d(TAG, "url = " + url);

Log.d(TAG, "filename = " + filename);

if(!downloadFile(url, filename)) {

String rs = "下載失敗 ";

Toast.makeText(AndroidTest.this, rs, Toast.LENGTH_SHORT).show();

}

}

}

class MyHandler extends Handler{

@Override

public void handleMessage(Message msg) {

if (msg.what == 1) {

progressBar.setProgress(index);

Log.d(TAG, "setProgress index:" + index);

if (index >= 99) {

String rs = "下載完成";

Toast.makeText(AndroidTest.this, rs, Toast.LENGTH_SHORT).show();

}

}

super.handleMessage(msg);

}

}

}

總結(jié)

以上是生活随笔為你收集整理的android 進度條_Android更新下載進度條 | 學步園的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。