布局代码
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
tools:context=".MainActivity" >
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="显示图片" />
<ImageView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/iv"/>
<Button
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/btn"
android:onClick="click"
android:text="下载图片"/>
</LinearLayout>
主线程代码
package com.csdn.net;
import com.csdn.net.asy.yibujiekou;
import android.os.Bundle;
import android.app.Activity;
import android.graphics.Bitmap;
import android.view.Menu;
import android.view.View;
import android.widget.Button;
import android.widget.ImageView;
public class MainActivity extends Activity {
private ImageView imageView;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
imageView = (ImageView) findViewById(R.id.iv);
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu; this adds items to the action bar if it is present.
getMenuInflater().inflate(R.menu.activity_main, menu);
return true;
}
public void click(View v){
String url="http://csdnimg.cn/www/images/csdnindex_logo.gif?";
asy a=new asy(new yibujiekou() {
@Override
public void zhiqian() {
imageView.setImageResource(R.drawable.tupian);
}
@Override
public void zhihou(Bitmap bmp) {
imageView.setImageBitmap(bmp);
}
});
a.execute(url);
}
}
自定义class类
package com.csdn.net;
import java.io.ByteArrayOutputStream;
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 android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.os.AsyncTask;
import android.widget.ImageView;
import android.widget.Toast;
public class asy extends AsyncTask<String,Void,Bitmap>{
private yibujiekou yibu;
public asy(yibujiekou _yibu){
this.yibu=_yibu;
}
/*private ImageView imageView;
public asy(ImageView _imageView){
this.imageView=_imageView;
}*/
//接口
public interface yibujiekou{
public void zhiqian();
public void zhihou(Bitmap bmp);
}
@Override
protected void onPreExecute() {
yibu.zhiqian();
super.onPreExecute();
}
@Override
protected Bitmap doInBackground(String... params) {
byte[] buffer=null;
try {
Thread.sleep(3000);
//进行网络连接
HttpClient client=new DefaultHttpClient();
//定义get请求对象。
HttpGet get=new HttpGet(params[0]);
//发送get请求,并且返回响应的结果
HttpResponse response=client.execute(get);
//判断响应完成
if(response.getStatusLine().getStatusCode()==200){
//响应的实体
HttpEntity he=response.getEntity();
//读取返回的数据流
InputStream is=he.getContent();
buffer=getByteData(is);
}
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return BitmapFactory.decodeByteArray(buffer, 0, buffer.length);
}
@Override
protected void onPostExecute(Bitmap result) {
yibu.zhihou(result);
super.onPostExecute(result);
}
public static byte[] getByteData(InputStream is){
//声明一个ByteArrayOutputStream
ByteArrayOutputStream bos = new ByteArrayOutputStream();
try {
//定义缓冲区
byte[] buffer = new byte[1024];
//读取is中的数据,写入到bos中
int len = -1;
while ((len = is.read(buffer)) != -1) {
//写入到bos中
bos.write(buffer, 0, len);
}
is.close();
bos.close();
} catch (Exception e) {
e.printStackTrace();
}
return bos.toByteArray();
}
}