首页

android下载进度条

java

2020-8-18

package com.android_asynctask;

import java.io.ByteArrayOutputStream;
import java.io.IOException;
import java.io.InputStream;

import org.apache.http.HttpEntity;
import org.apache.http.HttpResponse;
import org.apache.http.client.HttpClient;
import org.apache.http.client.methods.HttpGet;
import org.apache.http.impl.client.DefaultHttpClient;
import org.apache.http.util.EntityUtils;

import android.app.Activity;
import android.app.ProgressDialog;
import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.os.AsyncTask;
import android.os.Bundle;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.ImageView;

public class MainActivity extends Activity {
	private Button button,button2,button3;
	private ImageView imageView;
	private String image_path="http://h.hiphotos.baidu.com/image/pic/item/902397dda144ad3406f4be11d2a20cf430ad85d8.jpg";
	private ProgressDialog dialog;

	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.activity_main);
		button=(Button)findViewById(R.id.button1);
		imageView=(ImageView)findViewById(R.id.imageView1);
		dialog=new ProgressDialog(this);
		dialog.setTitle("提示信息");
		dialog.setMessage("正在下载,请稍后...");
		dialog.setProgressStyle(ProgressDialog.STYLE_HORIZONTAL);
		//dialog.setCancelable(false);  //直到下载完后才能消失
		button.setOnClickListener(new View.OnClickListener() {		
			@Override
			public void onClick(View v) {
				//执行异步任务的操作
				new MyTask().execute(image_path);

				//不能在UI主线程中直接访问网络
				/*new Thread(new Runnable() {
					@Override
					public void run() {
						HttpClient httpClient=new DefaultHttpClient();
						HttpGet httpGet=new HttpGet(image_path);
						try {
							httpClient.execute(httpGet);
						} catch (Exception e) {							
							e.printStackTrace();
						}
					}
				}).start();*/
			}
		});

		button2=(Button)findViewById(R.id.button2);
		button2.setOnClickListener(new View.OnClickListener() {			
			@Override
			public void onClick(View v) {
				new MyTask1().execute(image_path);
			}
		});
		
		button3=(Button)findViewById(R.id.button3);
		button3.setOnClickListener(new OnClickListener() {
			
			@Override
			public void onClick(View v) {
				UpdateManger updateManger=new UpdateManger(MainActivity.this);
				updateManger.checkUpdateInfo();
			}
		});
	}

	public class MyTask1 extends AsyncTask<String , Integer, Bitmap>{

		@Override
		protected void onPreExecute() {
			super.onPreExecute();
			dialog.show();
		}

		@Override
		protected Bitmap doInBackground(String... params) {
			Bitmap bitmap=null;
			ByteArrayOutputStream outputStream=new ByteArrayOutputStream();
			InputStream is=null;
			try {
				HttpClient client=new DefaultHttpClient();
				HttpGet get=new HttpGet(params[0]);
				HttpResponse response=client.execute(get);
				if(response.getStatusLine().getStatusCode()==200){
					is=response.getEntity().getContent();
					//先要获得文件的总长度
					long file_length=response.getEntity().getContentLength();
					int len=0;
					byte[] data=new byte[1024];
					int total_length=0;
					while((len=is.read(data))!=-1){
						total_length =len;
						int value=(int)((total_length/(float)file_length) * 100);
						publishProgress(value);
						outputStream.write(data, 0, len);
					}
					byte[] result=outputStream.toByteArray();
					bitmap=BitmapFactory.decodeByteArray(result, 0, result.length);
				}
			} catch (Exception e) {
				e.printStackTrace();
			}finally{
				if(is!=null){
					try {
						is.close();
					} catch (IOException e) {
						e.printStackTrace();
					}
				}
			}
			return bitmap;
		}

		@Override
		protected void onProgressUpdate(Integer... values) {
			super.onProgressUpdate(values);
			dialog.setProgress(values[0]);
		}

		@Override
		protected void onPostExecute(Bitmap result) {
			super.onPostExecute(result);
			imageView.setImageBitmap(result);
			dialog.dismiss();
		}

	}

	/**
	 * 使用异步任务的规则
	 * 第一个参数表示要执行的任务 通常是网络的路径
	 * 第二个参数表示进度的刻度
	 * 第三个参数表示任务返回的结果
	 */
	public class MyTask extends AsyncTask<String , Void, Bitmap>{

		/**
		 * 任务执行之前的操作
		 */
		@Override
		protected void onPreExecute() {
			super.onPreExecute();
			dialog.show();
		}

		/**
		 * 主要是完成耗时操作
		 * @param params
		 * @return
		 */
		@Override
		protected Bitmap doInBackground(String... params) {
			//使用网络链接类HttpClient对网络数据的提取
			HttpClient httpClient=new DefaultHttpClient();
			HttpGet httpGet=new HttpGet(params[0]);
			Bitmap bitmap=null;
			try {
				HttpResponse httpResponse=httpClient.execute(httpGet);
				if(httpResponse.getStatusLine().getStatusCode()==200){
					HttpEntity entity=httpResponse.getEntity();
					byte[] data=EntityUtils.toByteArray(entity);
					bitmap=BitmapFactory.decodeByteArray(data, 0, data.length);
				}
			} catch (Exception e) {
				e.printStackTrace();
			}
			return bitmap;
		}

		/**
		 * 主要是更新UI操作
		 * @param result
		 */
		@Override
		protected void onPostExecute(Bitmap result) {
			super.onPostExecute(result);
			imageView.setImageBitmap(result);
			dialog.dismiss();
		}
	}
}
资源下载此资源下载价格为1D币(VIP免费),请先
资源文件列表
android_asynctask_download/.classpath , 475
android_asynctask_download/.project , 862
android_asynctask_download/AndroidManifest.xml , 1030
android_asynctask_download/bin/AndroidManifest.xml , 1030
android_asynctask_download/bin/android_asynctask_download.apk , 315484
android_asynctask_download/bin/classes/com/android_asynctask/BuildConfig.class , 351
android_asynctask_download/bin/classes/com/android_asynctask/MainActivity$1.class , 1059
android_asynctask_download/bin/classes/com/android_asynctask/MainActivity$2.class , 1061
android_asynctask_download/bin/classes/com/android_asynctask/MainActivity$3.class , 981
android_asynctask_download/bin/classes/com/android_asynctask/MainActivity$MyTask.class , 2844
android_asynctask_download/bin/classes/com/android_asynctask/MainActivity$MyTask1.class , 4144
android_asynctask_download/bin/classes/com/android_asynctask/MainActivity.class , 2347
android_asynctask_download/bin/classes/com/android_asynctask/R$attr.class , 349
android_asynctask_download/bin/classes/com/android_asynctask/R$dimen.class , 470
android_asynctask_download/bin/classes/com/android_asynctask/R$drawable.class , 416
android_asynctask_download/bin/classes/com/android_asynctask/R$id.class , 561
android_asynctask_download/bin/classes/com/android_asynctask/R$layout.class , 444
android_asynctask_download/bin/classes/com/android_asynctask/R$menu.class , 397
android_asynctask_download/bin/classes/com/android_asynctask/R$string.class , 481
android_asynctask_download/bin/classes/com/android_asynctask/R$style.class , 440
android_asynctask_download/bin/classes/com/android_asynctask/R.class , 703
android_asynctask_download/bin/classes/com/android_asynctask/UpdateManger$1.class , 1066
android_asynctask_download/bin/classes/com/android_asynctask/UpdateManger$2.class , 2397
android_asynctask_download/bin/classes/com/android_asynctask/UpdateManger$3.class , 923
android_asynctask_download/bin/classes/com/android_asynctask/UpdateManger$4.class , 881
android_asynctask_download/bin/classes/com/android_asynctask/UpdateManger$5.class , 959
android_asynctask_download/bin/classes/com/android_asynctask/UpdateManger.class , 5308
android_asynctask_download/bin/classes.dex , 829504
android_asynctask_download/bin/dexedLibs/android-support-v4-00547fb6512f6b394925191ee8b56108.jar , 273766
android_asynctask_download/bin/jarlist.cache , 120
android_asynctask_download/bin/res/crunch/drawable-hdpi/ic_launcher.png , 9193
android_asynctask_download/bin/res/crunch/drawable-mdpi/ic_launcher.png , 5057
android_asynctask_download/bin/res/crunch/drawable-xhdpi/ic_launcher.png , 14068
android_asynctask_download/bin/resources.ap_ , 33587
android_asynctask_download/gen/com/android_asynctask/BuildConfig.java , 163
android_asynctask_download/gen/com/android_asynctask/R.java , 2925
android_asynctask_download/libs/android-support-v4.jar , 758727
android_asynctask_download/proguard-project.txt , 781
android_asynctask_download/project.properties , 563
android_asynctask_download/res/drawable-hdpi/ic_launcher.png , 9397
android_asynctask_download/res/drawable-mdpi/ic_launcher.png , 5237
android_asynctask_download/res/drawable-xhdpi/ic_launcher.png , 14383
android_asynctask_download/res/layout/activity_main.xml , 1759
android_asynctask_download/res/layout/progress.xml , 459
android_asynctask_download/res/menu/main.xml , 371
android_asynctask_download/res/values/dimens.xml , 220
android_asynctask_download/res/values/strings.xml , 243
android_asynctask_download/res/values/styles.xml , 697
android_asynctask_download/res/values-v11/styles.xml , 334
android_asynctask_download/res/values-v14/styles.xml , 391
android_asynctask_download/res/values-w820dp/dimens.xml , 381
android_asynctask_download/src/com/android_asynctask/MainActivity.java , 5605
android_asynctask_download/src/com/android_asynctask/UpdateManger.java , 5363
apk下载并安装.png , 27182
进度条.png , 21650
没有账号? 忘记密码?

社交账号快速登录