android 从网上下载图片

Kaming 发布于 2014/09/27 13:26
阅读 807
收藏 1
package com.example.imageviewdemo;


import java.io.ByteArrayOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.net.HttpURLConnection;
import java.net.MalformedURLException;
import java.net.URL;


import org.apache.http.HttpConnection;
import org.apache.http.util.ByteArrayBuffer;


import android.os.Bundle;
import android.app.Activity;
import android.graphics.BitmapFactory;
import android.util.Log;
import android.view.Menu;
import android.view.View;
import android.widget.Button;
import android.widget.ImageView;


public class MainActivity extends Activity {
private Button btn_down;
private ImageView imv_down;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        btn_down=(Button) findViewById(R.id.btn_download);
        imv_down=(ImageView) findViewById(R.id.imv_download);
        btn_down.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
// 从网络下载图片
byte[] bt=downImage();
imv_down.setImageBitmap(BitmapFactory.decodeByteArray(bt, 0, bt.length));
}
});
    }
    private byte[] downImage(){
    ByteArrayOutputStream bs=new ByteArrayOutputStream();
    try {
URL url=new URL("http://img0.bdstatic.com/img/image/shouye/mnct-9618775589.jpg");
//拿到HTTP的连接对象
HttpURLConnection conn=(HttpURLConnection) url.openConnection();
//设置连接超时
conn.setConnectTimeout(10000);
//获取服务器的响应内容
conn.setDoInput(true);
//HTTP请求方式
conn.setRequestMethod("GET");
//获取响应状态码
int code=conn.getResponseCode();
if(code==200){
InputStream is=conn.getInputStream();
byte[] data=new byte[1024];
int len;
while((len=is.read(data))!=-1){
bs.write(data,0,len);
}
return bs.toByteArray();
}
} catch (MalformedURLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();

   
return null;
   
    }
    
}


弄了好久都不知道哪里错了

加载中
0
色魔张大妈
色魔张大妈

http://blog.csdn.net/haqer0825/article/details/18223793

Kaming
Kaming
不是很明白啊 是否都在一个activity里新建一个子线程?
0
寒情漠漠
寒情漠漠
网络操作新开一个线程,不要在主线程里
Kaming
Kaming
具体要怎么实现啊??
0
carlos
carlos
所有连接网络的事情,不能放到主线程,要另外起一个线程,可以用asyntask
0
亓斌哥哥
亓斌哥哥
耗时的操作一定要放子线程中
返回顶部
顶部