方法一:

package com.example.handlerdemo;

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.app.Activity;
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.widget.ImageView;
import android.widget.Toast;

public class MainActivity extends Activity {
private static final int MSG_SUCCESS = 0;// 获取图片成功的标识
private static final int MSG_FAILURE = 1;// 获取图片失败的标识
ImageView mImageView;
Handler mHandler = new Handler() {
public void handleMessage(Message msg) {
switch (msg.what) {
case MSG_SUCCESS:
mImageView.setImageBitmap((Bitmap) msg.obj);// imageview显示从网络获取到的logo
break;
case MSG_FAILURE:
Toast.makeText(getApplication(), "下载失败", Toast.LENGTH_LONG)
.show();
break;
}
}
};protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
mImageView = (ImageView) findViewById(R.id.imageView1);// 显示图片的ImageView

}

public void onClick(View v) {
switch (v.getId()) {
case R.id.button1:
mImageView.setImageBitmap(null);
new Thread(new Runnable() {
public void run() {
HttpClient hc = new DefaultHttpClient();
HttpGet hg = new HttpGet(
"http://www.baidu.com/img/baidu_sylogo1.gif");// 获取百度的LOGO
final Bitmap bm;
try {
HttpResponse hr = hc.execute(hg);
bm = BitmapFactory.decodeStream(hr.getEntity()
.getContent());
} catch (Exception e) {
mHandler.obtainMessage(MSG_FAILURE).sendToTarget();// 获取图片失败
return;
}
mHandler.obtainMessage(MSG_SUCCESS, bm).sendToTarget();// 获取图片成功,向ui线程发送MSG_SUCCESS标识和bitmap对象

}
}).start();
break;
}
}
}

不过这个方法有个小问题 老是提示会内存泄露

方法二:

package com.example.handlerdemo;

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.app.Activity;
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.widget.ImageView;
import android.widget.Toast;

public class MainActivity extends Activity {

ImageView mImageView;

Handler mHandler02 = new Handler();

protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
mImageView = (ImageView) findViewById(R.id.imageView1);// 显示图片的ImageView

}

public void onClick(View v) {
switch (v.getId()) {
case R.id.button2:
mImageView.setImageBitmap(null);
new Thread(new Runnable() {
public void run() {
HttpClient hc = new DefaultHttpClient();
HttpGet hg = new HttpGet(
"http://www.baidu.com/img/baidu_sylogo1.gif");// 获取百度的LOGO
try {
HttpResponse hr = hc.execute(hg);
final Bitmap bm = BitmapFactory.decodeStream(hr.getEntity()
.getContent());
mHandler02.post(new Runnable() {
public void run() {
mImageView.setImageBitmap(bm);// imageview显示从网络获取到的logo
}
});
} catch (Exception e) {
mHandler02.post(new Runnable() {
public void run() {
Toast.makeText(getApplication(), "下载失败",
Toast.LENGTH_LONG).show();
}
});
}

}
}).start();
break;
default:
break;
}
}
}

用方法二是不会出内存泄露的警告的

效果图:

csdn下载地址:

本文链接

更多相关文章

  1. 【阿里云镜像】切换阿里巴巴开源镜像站镜像——Debian镜像
  2. android 图片自动切换
  3. Unity调用Android保存图片到相册
  4. Android图片压缩
  5. 【Android】android图片轮播
  6. Android:EditText插入图片实现图文混排
  7. Android之GLES2.0显示图片测试代码
  8. android获取指定路径下目录文件
  9. ANDROID截屏

随机推荐

  1. Belkin introduces WeMo light switch, c
  2. Android(安卓)小发现:xml里定义的组件取出
  3. 【Android】如何调节屏幕亮度,关闭屏幕
  4. Error:Unknown host 'jcenter.bintray.co
  5. Android样式——Styles
  6. android 在TextView中显示EditText,通过B
  7. java.lang.NoClassDefFoundError: androi
  8. 在Android中实现多线程同步
  9. 【转】Android字体小结
  10. Android开发个人小记