public class Test extends Activity { private ImageView img; private Handler handlers; private String url="http://changsha.ejoooo.com/api/jianlijjlists.aspx?userid=544"; private String imgUrl="http://p3.so.qhimg.com/t018124199aa674a553.jpg"; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); this.setContentView(R.layout.data_test); img = (ImageView) findViewById(R.id.img); displayImg(imgUrl); //handler线程通讯机制 handlers = new Handler(){ @Override public void handleMessage(Message msg) { super.handleMessage(msg); if(msg.what == 0x001){ byte[] b = (byte[]) msg.obj; Bitmap bitmap = BitmapFactory.decodeByteArray(b,0,b.length); img.setImageBitmap(bitmap); } } }; }
//显示图片的方法 public void displayImg(final String urls){ new Thread(new Runnable() { @Override public void run() { try { int array_len = new URL(urls).openConnection().getContentLength();//图片长度 InputStream is = new URL(urls).openConnection().getInputStream(); byte[] all = new byte[array_len];//储存图片的总字节数组 int p=0;//指针 byte[] b = new byte[1024]; int len = is.read(b, 0, b.length);//每次读到的数组长度 while (len>0){ int i=0; for(;i<len;i++){ all[i+p] = b[i];//将每次读到的字节储存到all数组 } len = is.read(b,0,b.length); p+= i;//指针后移 } is.close(); //通过handler机制实现线程间通讯(子线程负责获取数据,主程序负责改变UI界面) Message message = handlers.obtainMessage(0x001); message.obj=all; handlers.sendMessage(message); } catch (IOException e) { e.printStackTrace(); } } }).start(); } }