1. 从网络获取图片
/** * 获取网络图片 * @param path 网络图片路径 * @return * @throws Exception */ public static byte[] getImage(String path) throws Exception{ URL url = new URL(path); HttpURLConnection conn = (HttpURLConnection) url.openConnection(); conn.setConnectTimeout(5 * 1000); conn.setRequestMethod("GET"); InputStream inStream = conn.getInputStream(); if(conn.getResponseCode()==200){ return StreamTool.readStream(inStream); } return null; }
2. 读取流中数据
/** * 读取流中的数据 * @param inStream * @return * @throws Exception */ public static byte[] readStream(InputStream inStream) throws Exception{ ByteArrayOutputStream outStream = new ByteArrayOutputStream(); byte[] buffer = new byte[1024]; int len = 0; while( (len=inStream.read(buffer)) != -1){ outStream.write(buffer, 0, len); } outStream.close(); inStream.close(); return outStream.toByteArray(); }
3. 在ListView中显示
public class MainActivity extends Activity {
private EditText pathText;
private ImageView imageView;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
pathText = (EditText) this.findViewById(R.id.path);
imageView = (ImageView) this.findViewById(R.id.imageView);
Button button = (Button) this.findViewById(R.id.button);
button.setOnClickListener(new View.OnClickListener() {
public void onClick(View v) {
String path = pathText.getText().toString();
try {
byte[] data = ImageService.getImage(path);
if(data!=null){
Bitmap bitmap = BitmapFactory.decodeByteArray(data, 0, data.length);//构造一张位图
imageView.setImageBitmap(bitmap);//完成图片的显示
}else{
Toast.makeText(MainActivity.this, R.string.imageerror, 1).show();
}
} catch (Exception e) {
Toast.makeText(MainActivity.this, R.string.neterror, 1).show();
e.printStackTrace();
}
}
});
}
}
大功告成!