关于AsyncTask的详细过程看:http://blog.csdn.net/xunfan/article/details/40378249
package com.example.img;
import java.io.InputStream;
import java.net.HttpURLConnection;
import java.net.URL;
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.os.StrictMode;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.FrameLayout;
import android.widget.ImageView;
import android.widget.ProgressBar;
public class Asy extends Activity implements OnClickListener {
private static final String imgUrl = "http://upload.wikimedia.org/wikipedia/commons/thumb/e/ea/Hukou_Waterfall.jpg/800px-Hukou_Waterfall.jpg";
private Button btn;
private ProgressBar progress;
private FrameLayout frameLayout;
ProgressDialog dialog = null;
ImageView view;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
if (android.os.Build.VERSION.SDK_INT > 9) {
StrictMode.ThreadPolicy policy = new StrictMode.ThreadPolicy.Builder()
.permitAll().build();
StrictMode.setThreadPolicy(policy);
}
btn = (Button) this.findViewById(R.id.btnFirst);
progress = (ProgressBar) this.findViewById(R.id.progress);
progress.setVisibility(View.GONE);
frameLayout = (FrameLayout) this.findViewById(R.id.frameLayout);
view = (ImageView) frameLayout.findViewById(R.id.image);
btn.setOnClickListener(this);
}
@Override
public void onClick(View view) {
switch (view.getId()) {
case R.id.btnFirst:
dialog = ProgressDialog.show(this, "", "下载数据,请稍等 …", true, true);
new GetDataTask().execute();
}
}
private class GetDataTask extends AsyncTask<Void, Void, Bitmap> {
@Override
protected Bitmap doInBackground(Void... params) {
URL url;
Bitmap bitmap = null;
try {
url = new URL(imgUrl);
HttpURLConnection conn = (HttpURLConnection) url
.openConnection();
conn.setDoInput(true);
conn.connect();
InputStream inputStream = conn.getInputStream();
bitmap = BitmapFactory.decodeStream(inputStream);
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return bitmap;
}
@Override
protected void onPostExecute(Bitmap result) {
view.setImageBitmap(result);
dialog.dismiss();
}
}
}