package com.example.handler1;
import java.io.IOException;
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.Bundle;
import android.os.Handler;
import android.os.Message;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.ImageView;
public class MainActivity extends Activity {
Button mStartLoad;
private String patch = "http://news.xinhuanet.com/fashion/2016-03/10/128785555_14574886548051n.jpg";
private final int MESSAGE_FINISH = 0x2016;
private ImageView mShowImageView;
private ProgressDialog mProgress;
private Handler mHandler = new Handler(){
@Override
public void handleMessage(Message msg) {
super.handleMessage(msg);
byte[] data = (byte[]) msg.obj;
Bitmap bitmap;
bitmap = BitmapFactory.decodeByteArray(data, 0, data.length);
mShowImageView.setImageBitmap(bitmap);
if(msg.what == MESSAGE_FINISH)
{
mProgress.dismiss();
}
}
};
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
mStartLoad = (Button)findViewById(R.id.btn);
mShowImageView = (ImageView)findViewById(R.id.imageView1);
mProgress = new ProgressDialog(this);
mProgress.setTitle("提示");
mProgress.setMessage("正在下载");
mProgress.setCancelable(false);
mStartLoad.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View arg0) {
MyRunnable r = new MyRunnable();
Thread t = new Thread(r);
t.start();
mProgress.show();
}
});
}
public class MyRunnable implements Runnable{
//子線程中完成访问网络的操作,将网络中的数据取出来放到Message,由Message携带的数据发送给Handler
@Override
public void run() {
HttpClient client = new DefaultHttpClient();
HttpGet get = new HttpGet(patch);
try {
HttpResponse res = client.execute(get);
if(res.getStatusLine().getStatusCode() == 200){
HttpEntity entity = res.getEntity();
byte[] data = EntityUtils.toByteArray(entity);
Message msg = Message.obtain();
msg.obj = data;
msg.what = MESSAGE_FINISH;
mHandler.sendMessage(msg);
}
} catch (IOException e) {
e.printStackTrace();
}
}
}
}
结果图: