Android教程網
  1. 首頁
  2. Android 技術
  3. Android 手機
  4. Android 系統教程
  5. Android 游戲
 Android教程網 >> Android技術 >> 關於Android編程 >> Android 使用URL顯示網絡圖片

Android 使用URL顯示網絡圖片

編輯:關於Android編程

 

 

URL對象中前而幾個方法都非常容易理解,而該對象提供的openStream()可以讀取該 URL資源的InputStream,通過該方法可以非常方便地讀取遠程資源。

下面的程序示范如何通過URL類讀取遠程資源:

1)只顯示網絡圖片

2)顯示並下載網絡圖片

 

1)只顯示網絡圖片

\

a) activity_main.xml

 



    

 

b)MainActivity.java

 

package dujun.king.urlgetimage;

import java.io.InputStream;
import java.net.URL;

import android.app.Activity;
import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.os.Bundle;
import android.os.Handler;
import android.os.Message;
import android.view.Menu;
import android.view.MenuItem;
import android.widget.ImageView;


public class MainActivity extends Activity {

	Bitmap bitmap;
    ImageView imageview;
    
    Handler handler=new Handler(){
        @Override
        public void handleMessage(Message msg) {
            if (msg.what==0x9527) {
                //顯示從網上下載的圖片
            	imageview.setImageBitmap(bitmap);
            }
        }          
    };
    
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        imageview=(ImageView)findViewById(R.id.imageView1);     
        //創建並啟動一個新線程用於從網絡上下載圖片
        new Thread(){
            @Override
            public void run() {
                try {
                    //創建一個url對象
                    URL url=new URL(http://www.baidu.com/img/bdlogo.png);
                    //打開URL對應的資源輸入流
                    InputStream is= url.openStream();
                    //從InputStream流中解析出圖片
                    bitmap = BitmapFactory.decodeStream(is);
                //  imageview.setImageBitmap(bitmap); 
                    //發送消息,通知UI組件顯示圖片
                    handler.sendEmptyMessage(0x9527);
                    //關閉輸入流
                    is.close();
                } catch (Exception e) {
                    e.printStackTrace();
                }
            }          
        }.start();
    
    }


    @Override
    public boolean onCreateOptionsMenu(Menu menu) {
        // Inflate the menu; this adds items to the action bar if it is present.
        getMenuInflater().inflate(R.menu.main, menu);
        return true;
    }

    @Override
    public boolean onOptionsItemSelected(MenuItem item) {
        // Handle action bar item clicks here. The action bar will
        // automatically handle clicks on the Home/Up button, so long
        // as you specify a parent activity in AndroidManifest.xml.
        int id = item.getItemId();
        if (id == R.id.action_settings) {
            return true;
        }
        return super.onOptionsItemSelected(item);
    }
}
c)AndroidMainifest.xml

 

 




    
	
	
	
    
        
            
                

                
            
        
    


2)如果我們要顯示並下載網絡圖片,只需要將MainActivity.java文件修改如下:

 

package dujun.king.urlgetimage;

import java.io.InputStream;
import java.io.OutputStream;
import java.net.URL;

import android.app.Activity;
import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.os.Bundle;
import android.os.Handler;
import android.os.Message;
import android.view.Menu;
import android.view.MenuItem;
import android.widget.ImageView;


public class MainActivity extends Activity {

	Bitmap bitmap;
    ImageView imageview;
    
    Handler handler=new Handler(){
        @Override
        public void handleMessage(Message msg) {
            if (msg.what==0x9527) {
                //顯示從網上下載的圖片
            	imageview.setImageBitmap(bitmap);
            }
        }          
    };
    
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        imageview=(ImageView)findViewById(R.id.imageView1);     
        //創建並啟動一個新線程用於從網絡上下載圖片
        //這裡必須新起一個線程,Android後面的版本中,不允許在主線程中聯網
        new Thread(){
            @Override
            public void run() {
                try {
                    //創建一個url對象
                    URL url=new URL(http://www.baidu.com/img/bdlogo.png);
                    //打開URL對應的資源輸入流
                    InputStream is= url.openStream();
                    //從InputStream流中解析出圖片
                    bitmap = BitmapFactory.decodeStream(is);
                //  imageview.setImageBitmap(bitmap); 
                    //發送消息,通知UI組件顯示圖片
                    handler.sendEmptyMessage(0x9527);
                    //關閉輸入流
                    is.close();
                    //------------------------------
                    //下載網絡圖片
                    //再次打開資源流
                    is = url.openStream();
                    //打開手機對應的輸出流
                    //存放在手機中,並命名為baidulogo.png
                    OutputStream os = openFileOutput(baidulogo.png, MODE_WORLD_READABLE);
                    byte[] buff = new byte[1024];
                    int len = 0;
                    //因為網絡下載一般不可能一次下載完畢,我們將每次下載好的有效數據寫入
                    while ((len = is.read(buff)) > 0)
                    {
                    	os.write(buff,0,len);
                    }
                    //關閉流
                    is.close();
                    os.close();
                } catch (Exception e) {
                    e.printStackTrace();
                }
            }          
        }.start();
    }

    @Override
    public boolean onCreateOptionsMenu(Menu menu) {
        // Inflate the menu; this adds items to the action bar if it is present.
        getMenuInflater().inflate(R.menu.main, menu);
        return true;
    }

    @Override
    public boolean onOptionsItemSelected(MenuItem item) {
        // Handle action bar item clicks here. The action bar will
        // automatically handle clicks on the Home/Up button, so long
        // as you specify a parent activity in AndroidManifest.xml.
        int id = item.getItemId();
        if (id == R.id.action_settings) {
            return true;
        }
        return super.onOptionsItemSelected(item);
    }
}

 


參考文獻:瘋狂Android講義(第2版) 李剛編著

原文地址:http://blog.csdn.net/qingdujun/article/details/39271479

  1. 上一頁:
  2. 下一頁:
熱門文章
閱讀排行版
Copyright © Android教程網 All Rights Reserved