一、概述
URL,说白了就是一个网络地址(网址),通常一个网址里包含很多内容,这里要讲的不是如何从一个包括很多内容(比如很多图片)的网址里找到自己感兴趣的内容(比如说某一张图片),而是从一个带有图片格式(.jpg、.png、.bmp等)后缀的网址里获取该图片,也就是说该网址里只有一张图片。
二、要求
从指定的网址里获取图片并显示出来。
三、实现
新建工程MyURL,修改main.xml文件,在里面添加一个ImageView,如下:
1 <?xml version="1.0" encoding="utf-8"?>
2 <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
3 android:layout_width="fill_parent"
4 android:layout_height="fill_parent"
5 android:orientation="vertical" >
6
7 <ImageView
8 android:id="@+id/img"
9 android:layout_width="fill_parent"
10 android:layout_height="fill_parent"
11 />
12
13 </LinearLayout>
修改MyURLActivity.java文件,主要是实例化URL对象,接着获取URL对象的输入流,再将该输入流解码成图片,最后把该图片显示出来。完整的内容如下:
1 package com.nan.url;
2
3 import java.io.IOException;
4 import java.io.InputStream;
5 import java.net.MalformedURLException;
6 import java.net.URL;
7
8 import android.app.Activity;
9 import android.graphics.Bitmap;
10 import android.graphics.BitmapFactory;
11 import android.os.Bundle;
12 import android.widget.ImageView;
13
14 public class MyURLActivity extends Activity
15 {
16 private ImageView mImageView = null;
17 private URL mURL = null;
18 private Bitmap mBitmap = null;
19 private InputStream mInputStream = null;
20
21 /** Called when the activity is first created. */
22 @Override
23 public void onCreate(Bundle savedInstanceState)
24 {
25 super.onCreate(savedInstanceState);
26 setContentView(R.layout.main);
27
28 mImageView = (ImageView)this.findViewById(R.id.img);
29
30 try {
31 //图片地址
32 mURL = new URL("http://www.android.com/images/sxsw-promo.png");
33 } catch (MalformedURLException e) {
34 // TODO Auto-generated catch block
35 e.printStackTrace();
36 }
37
38 try {
39 //获得URL的输入流
40 mInputStream = mURL.openStream();
41 } catch (IOException e) {
42 // TODO Auto-generated catch block
43 e.printStackTrace();
44 }
45 //解码输入流
46 mBitmap = BitmapFactory.decodeStream(mInputStream);
47 //显示图片
48 mImageView.setImageBitmap(mBitmap);
49
50 try {
51 //关闭输入流
52 mInputStream.close();
53 } catch (IOException e) {
54 // TODO Auto-generated catch block
55 e.printStackTrace();
56 }
57
58 }
59
60 }
最后,修改AndroidManifest.xml文件,加入访问网络的权限:
1 <uses-permission android:name="android.permission.INTERNET"/>
运行该程序: