Android通过URL读取网络图片

先上效果图:



基本代码为:

[java]  view plain copy
  1. package com.example.testjsonpic;  
  2.   
  3. import java.io.InputStream;  
  4. import java.net.HttpURLConnection;  
  5. import java.net.URL;  
  6.   
  7. import android.os.Bundle;  
  8. import android.app.Activity;  
  9. import android.graphics.Bitmap;  
  10. import android.graphics.BitmapFactory;  
  11. import android.util.Log;  
  12. import android.widget.ImageView;  
  13.   
  14. public class MainActivity extends Activity  
  15. {  
  16.   
  17.     public static final String DATA="http:///img/baidu_sylogo1.gif";  
  18.     public static final String DATA_="http://x.limgs.cn/f2/c1/up201301/342a0432638526a1c79471d86f3d7192.jpg";  
  19.     ImageView image = null,image02 = null;  
  20.     @Override  
  21.     protected void onCreate(Bundle savedInstanceState)  
  22.     {  
  23.         super.onCreate(savedInstanceState);  
  24.         setContentView(R.layout.activity_main);  
  25.         initsView();  
  26.     }  
  27.     public void initsView()  
  28.     {  
  29.         //通过第一种方法获取  
  30.         this.image = (ImageView) findViewById(R.id.image);  
  31.         image.setImageBitmap(getHttpBitmap(DATA));  
  32.           
  33.         //通过第二种方法获取  
  34.         this.image02 = (ImageView) findViewById(R.id.image02);  
  35.         image02.setImageBitmap(getBitmap(DATA_));  
  36.           
  37.     }  
  38.       
  39.     //第一种方法  
  40.     public Bitmap getHttpBitmap(String data)  
  41.     {  
  42.         Bitmap bitmap = null;  
  43.         try  
  44.         {  
  45.             //初始化一个URL对象  
  46.             URL url = new URL(data);  
  47.             //获得HTTPConnection网络连接对象  
  48.             HttpURLConnection connection = (HttpURLConnection) url.openConnection();  
  49.             connection.setConnectTimeout(5*1000);  
  50.             connection.setDoInput(true);  
  51.             connection.connect();  
  52.             //得到输入流  
  53.             InputStream is = connection.getInputStream();  
  54.             Log.i("TAG""*********inputstream**"+is);  
  55.             bitmap = BitmapFactory.decodeStream(is);  
  56.             Log.i("TAG""*********bitmap****"+bitmap);  
  57.             //关闭输入流  
  58.             is.close();  
  59.             //关闭连接  
  60.             connection.disconnect();  
  61.         } catch (Exception e)  
  62.         {  
  63.             // TODO Auto-generated catch block  
  64.             e.printStackTrace();  
  65.         }  
  66.           
  67.         return bitmap;  
  68.     }  
  69.       
  70.     //第二种方法  
  71.     public Bitmap getBitmap(String s)  
  72.     {  
  73.         Bitmap bitmap = null;  
  74.         try  
  75.         {  
  76.             URL url = new URL(s);  
  77.             bitmap = BitmapFactory.decodeStream(url.openStream());  
  78.         } catch (Exception e)  
  79.         {  
  80.             // TODO Auto-generated catch block  
  81.             e.printStackTrace();  
  82.         }  
  83.           
  84.         return bitmap;  
  85.     }  
  86.   
  87. }  

布局文件比较简答,就不在此列出了。

需要运行,还要在AndroidManifest.xml中加入网络权限。

[java]  view plain copy
  1. "android.permission.INTERNET"/>  

为什么上面会有方法一二之分呢?

1、我有一次在练习时,发现在4.1版本的模拟器中,用HttpUrlConnection.getInputStream(),也就是第一种方法,不能运行解析出图片,会报错。

2、通过URL.openStream()方法则没有问题。


你可能感兴趣的:(Android通过URL读取网络图片)