当前位置:操作系统 > 安卓/Android >>

(android基础)之Android获取网络上的图片结合ImageView的简单应用

网络的访问在我们日常生活中太重要了,如果没有网络我们的生活将会是什么样子呢?android手机和浏览器也是一样的,也可以通过网络通讯获取数据,如调用webservice,EJB等。下面就通过一个小例子从网络获取一幅图片并显示在手机上,开发中将会使用到一个新的组件ImageView.
1.写一个用来处理字节流的工具类

package org.lxh.util; 
 
import java.io.ByteArrayOutputStream; 
import java.io.InputStream; 
 
public class StreamTool { 
    public static byte[] readInputStream(InputStream in) throws Exception{ 
        int len=0; 
        byte buf[]=new byte[1024]; 
        ByteArrayOutputStream out=new ByteArrayOutputStream(); 
        while((len=in.read(buf))!=-1){ 
            out.write(buf,0,len);  //把数据写入内存  
        } 
        out.close();  //关闭内存输出流  
        return out.toByteArray(); //把内存输出流转换成byte数组  
    } 
 

2.写一个得到图片byte数组的service类

package org.lxh.service; 
 
import java.io.ByteArrayOutputStream; 
import java.io.File; 
import java.io.FileOutputStream; 
import java.io.IOException; 
import java.io.InputStream; 
import java.net.HttpURLConnection; 
import java.net.MalformedURLException; 
import java.net.URL; 
 
import org.lxh.util.StreamTool; 
 
import android.util.Log; 
 
public class WebService { 
    public static byte[] getImage(String path){ 
         
        URL url; 
        byte[] b=null; 
        try { 
            url = new URL(path);   //设置URL  
            HttpURLConnection con; 
             
            con = (HttpURLConnection)url.openConnection();  //打开连接  
         
            con.setRequestMethod("GET"); //设置请求方法  
            //设置连接超时时间为5s  
            con.setConnectTimeout(5000); 
            InputStream in=con.getInputStream();  //取得字节输入流  
         
            b=StreamTool.readInputStream(in); 
             
        } catch (Exception e) { 
             
            e.printStackTrace(); 
        } 
        return b;  //返回byte数组  
         
    } 
     

3.写一个用户操作界面

<?xml version="1.0" encoding="utf-8"?> 
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:orientation="vertical" 
    android:layout_width="fill_parent" 
    android:layout_height="fill_parent" 
    > 
<TextView   
    android:layout_width="fill_parent"  
    android:layout_height="wrap_content"  
    android:text="@string/hello" 
    /> 
    <TextView   
    android:layout_width="fill_parent"  
    android:layout_height="wrap_content"  
    android:text="@string/picaddress" 
    /> 
    <EditText 
    android:layout_width="wrap_content"  
    android:layout_height="wrap_content"  
    android:text="/2012/0406/20120406025816157.jpg" 
    android:id="@+id/imageaddress" 
    /> 
    <Button 
     android:layout_width="wrap_content"  
    android:layout_height="wrap_content"  
    android:text="@string/look" 
    android:id="@+id/button" 
    /> 
    <ImageView 
     android:layout_width="fill_parent"  
    android:layout_height="fill_parent"  
    android:id="@+id/image"/> 
</LinearLayout> 


4.写一个activity类
package org.lxh.net; 
 
import org.lxh.service.WebService; 
 
import android.app.Activity; 
import android.graphics.Bitmap; 
import android.graphics.BitmapFactory; 
import android.os.Bundle; 
import android.util.Log; 
import android.view.View; 
import android.widget.Button; 
import android.widget.EditText; 
import android.widget.ImageView; 
import android.widget.Toast; 
 
public class NetActivity extends Activity { 
   private EditText picaddress; 
   private Button button; 
   private ImageView imageView; 
    public void onCreate(Bundle savedInstanceState) { 
        super.onCreate(savedInstanceState); 
        setContentView(R.layout.main); 
        button=(Button)this.findViewById(R.id.button); 
        imageView=(ImageView)this.findViewById(R.id.image); 
        picaddress=(EditText)this.findViewById(R.id.imageaddress); 
        button.setOnClickListener(new View.OnClickListener() { 
             
     &nbs

补充:移动开发 , Android ,
CopyRight © 2022 站长资源库 编程知识问答 zzzyk.com All Rights Reserved
部分文章来自网络,