灯火互联
管理员
管理员
  • 注册日期2011-07-27
  • 发帖数41778
  • QQ
  • 火币41290枚
  • 粉丝1086
  • 关注100
  • 终身成就奖
  • 最爱沙发
  • 忠实会员
  • 灌水天才奖
  • 贴图大师奖
  • 原创先锋奖
  • 特殊贡献奖
  • 宣传大使奖
  • 优秀斑竹奖
  • 社区明星
阅读:2741回复:0

Android中显示网络上的图片

楼主#
更多 发布于:2012-09-06 13:52


Android中显示网络上的图片,需要先根据url找到图片地址,然后把该图片转化成java的InputStream,然后把该InputStream流转化成BitMap,BitMap可以直接显示在Android中的ImageView里。这就是显示网络上图片的思路,实现起来很简单。下面让我们看一下实现起来的过程。
首先在AndroidManifest.xml中给程序加上访问internet的权限:
<uses-permissionAndroid:name="Android.permission.INTERNET" />

         然后在布局文件中加入一个ImageView,用来显示网络上的图片:


[html] <span style="font-size:16px;"><?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:Android="http://schemas.Android.com/apk/res/Android"
    Android:layout_width="fill_parent"
    Android:layout_height="fill_parent"
    Android:orientation="vertical" >

    <TextView
        Android:layout_width="fill_parent"
        Android:layout_height="wrap_content"
        Android:text="@string/hello" />
    <ImageView  
        Android:layout_width="wrap_content"
        Android:layout_height="wrap_content"
        Android:id="@+id/imageView" />

</LinearLayout>
</span>
<span style="font-size:16px;"><?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:Android="http://schemas.Android.com/apk/res/Android"
    Android:layout_width="fill_parent"
    Android:layout_height="fill_parent"
    Android:orientation="vertical" >
    <TextView
        Android:layout_width="fill_parent"
        Android:layout_height="wrap_content"
        Android:text="@string/hello" />
    <ImageView
        Android:layout_width="wrap_content"
        Android:layout_height="wrap_content"
        Android:id="@+id/imageView" />
</LinearLayout>
</span>


在主程序的Activity中写从网络中得到图片,并转化成InputStream,然后再转化成可以显示在ImageView里的Bitmap。

[java] <span style="font-size:16px;">package com.image;

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

import Android.app.Activity;
import Android.graphics.Bitmap;
import Android.graphics.BitmapFactory;
import Android.os.Bundle;
import Android.widget.ImageView;

public class NetImageActivity extends Activity {
    /** Called when the activity is first created. */
     String imageUrl = "";  
     Bitmap bmImg;  
     ImageView imView;  
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
        imView = (ImageView) findViewById(R.id.imageView);  
        imView.setImageBitmap(returnBitMap(imageUrl));  
    }
    
    public Bitmap returnBitMap(String url){
        URL myFileUrl = null;  
        Bitmap bitmap = null;  
        try {  
            myFileUrl = new URL(url);  
        } catch (MalformedURLException e) {  
            e.printStackTrace();  
        }  
        try {  
            HttpURLConnection conn = (HttpURLConnection) myFileUrl  
              .openConnection();  
            conn.setDoInput(true);  
            conn.connect();  
            InputStream is = conn.getInputStream();  
            bitmap = BitmapFactory.decodeStream(is);  
            is.close();  
        } catch (IOException e) {  
              e.printStackTrace();  
        }  
              return bitmap;  
    }  
}
</span>
<span style="font-size:16px;">package com.image;
import java.io.IOException;
import java.io.InputStream;
import java.net.HttpURLConnection;
import java.net.MalformedURLException;
import java.net.URL;
import Android.app.Activity;
import Android.graphics.Bitmap;
import Android.graphics.BitmapFactory;
import Android.os.Bundle;
import Android.widget.ImageView;
public class NetImageActivity extends Activity {
    /** Called when the activity is first created. */
  String imageUrl = "http://www.atcpu.com/uploadfile/2012/0416/20120416110127604.jpg";
  Bitmap bmImg;
  ImageView imView;
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
        imView = (ImageView) findViewById(R.id.imageView);
        imView.setImageBitmap(returnBitMap(imageUrl));
    }
  
    public Bitmap returnBitMap(String url){
     URL myFileUrl = null;
     Bitmap bitmap = null;
     try {
      myFileUrl = new URL(url);
     } catch (MalformedURLException e) {
      e.printStackTrace();
     }
     try {
      HttpURLConnection conn = (HttpURLConnection) myFileUrl
        .openConnection();
      conn.setDoInput(true);
      conn.connect();
      InputStream is = conn.getInputStream();
      bitmap = BitmapFactory.decodeStream(is);
      is.close();
     } catch (IOException e) {
        e.printStackTrace();
     }
        return bitmap;
    }
}
</span>


         然后运行程序就可以显示出来网络上的图片了。
         运行效果:




摘自 北京大学-google Android实验室



喜欢0 评分0
游客

返回顶部