第一步:导入Xutils Jar包
第二部:添加权限
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/>
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE"/>
<uses-permission android:name="android.permission.INTERNET"></uses-permission>
Activity:
- public class MainActivity extends AppCompatActivity implements View.OnClickListener {
-
- private ProgressBar pb;
- private TextView tv_error;
- private TextView tv_progress;
- private Button btn_down,btn_stop;
-
- Boolean isDowloding = false;
- HttpHandler handler;
-
- @Override
- protected void onCreate(Bundle savedInstanceState) {
- super.onCreate(savedInstanceState);
- setContentView(R.layout.activity_main);
-
-
- pb = (ProgressBar) findViewById(R.id.pb);
- tv_progress = (TextView) findViewById(R.id.tv_progress);
- tv_error = (TextView) findViewById(R.id.tv_failure);
- btn_down = (Button) findViewById(R.id.btn_down);
- btn_stop = (Button) findViewById(R.id.btn_stop);
-
-
- btn_down.setOnClickListener(this);
-
- btn_stop.setOnClickListener(this);
- }
-
-
-
-
- @Override
- public void onClick(View view) {
-
-
-
-
-
-
-
- switch (view.getId()){
- case R.id.btn_down:
-
- btn_stop.setEnabled(true);
- btn_down.setEnabled(false);
- Toast.makeText(this, "开始", Toast.LENGTH_SHORT).show();
- String fileName = "bbbbb.jpg";
-
- String path ="http://c.hiphotos.baidu.com/image/pic/item/b90e7bec54e736d1e51217c292504fc2d46269f3.jpg";
-
- HttpUtils http = new HttpUtils();
- handler = http.download(path, Environment.getExternalStorageDirectory() + "/"
- + fileName, true, true, new RequestCallBack<File>() {
-
- @Override
- public void onSuccess(ResponseInfo<File> arg0) {
- isDowloding = false;
-
- Toast.makeText(MainActivity.this, arg0.result.getPath(), Toast.LENGTH_SHORT).show();
- }
-
- @Override
- public void onFailure(HttpException arg0, String arg1) {
-
- tv_error.setText(arg1);
- }
-
- @Override
- public void onLoading(long total, long current, boolean isUploading) {
- super.onLoading(total, current, isUploading);
- if (current < total) {
- isDowloding = true;
- } else {
- isDowloding = false;
- }
-
- pb.setMax((int) total);
- pb.setProgress((int) current);
- tv_progress.setText(current * 100 / total + "%");
- }
-
- });
-
- break;
- case R.id.btn_stop:
-
- btn_stop.setEnabled(false);
- btn_down.setEnabled(true);
- if (isDowloding) {
- if (handler != null) {
- handler.cancel();
- }
- }
-
- break;
- }
-
-
- }
- }
第四步:xml
- <?xml version="1.0" encoding="utf-8"?>
- <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
- xmlns:tools="http://schemas.android.com/tools"
- android:id="@+id/activity_main"
- android:layout_width="match_parent"
- android:layout_height="match_parent"
- android:orientation="vertical"
- tools:context=".MainActivity">
-
- <LinearLayout
- android:layout_width="wrap_content"
- android:layout_height="wrap_content"
- android:orientation="horizontal">
-
- <Button
- android:id="@+id/btn_down"
- android:layout_width="wrap_content"
- android:layout_height="wrap_content"
- android:text="开始下载" />
-
- <Button
- android:id="@+id/btn_stop"
- android:layout_width="wrap_content"
- android:layout_height="wrap_content"
- android:text="暂停下载" />
- </LinearLayout>
-
- <TextView
- android:id="@+id/tv_failure"
- android:layout_width="wrap_content"
- android:layout_height="wrap_content" />
-
- <ProgressBar
- android:id="@+id/pb"
- style="@android:style/Widget.ProgressBar.Horizontal"
- android:layout_width="match_parent"
- android:layout_height="wrap_content" />
-
- <TextView
- android:id="@+id/tv_progress"
- android:layout_width="wrap_content"
- android:layout_height="wrap_content"
- android:text="下载进度" />
- </LinearLayout>