我的位置: 首頁(yè) > 學(xué)習(xí)專(zhuān)區(qū) > 安卓技術(shù) > Android制作一個(gè)可以獲取網(wǎng)絡(luò)圖片的程序

Android制作一個(gè)可以獲取網(wǎng)絡(luò)圖片的程序

2012-02-19 11:29:00
來(lái)源:
[導(dǎo)讀] 在main xml上,我們需要放入ImageView、Button、EditText這樣三個(gè)控件,到時(shí)候,我們點(diǎn)擊按鈕的時(shí)候就可以從editText中獲取剛才我們獲取的

在main.xml上,我們需要放入ImageView、Button、EditText這樣三個(gè)控件,到時(shí)候,我們點(diǎn)擊按鈕的時(shí)候就可以從editText中獲取剛才我們獲取的地址字符串,并通過(guò)一系列操作獲取圖片數(shù)據(jù),再通過(guò)ImageView的setImageBitmap(bitmap)方法在界面上把圖片顯示出來(lái)。以下是詳細(xì)代碼,我一行一行給大家解讀一下

import java.io.ByteArrayOutputStream;

import java.io.IOException;

import java.io.InputStream;

import java.net.HttpURLConnection;

import java.net.URL;

import android.app.Activity;

import android.graphics.Bitmap;

import android.graphics.BitmapFactory;

import android.media.MediaPlayer;

import android.net.Uri;

import android.os.Bundle;

import android.view.View;

import android.widget.Button;

import android.widget.ImageView;

import android.widget.TextView;

public class GetNetImageActivity extends Activity { //聲明三個(gè)控件

private TextView address;

private Button show;

private ImageView pic;

String path=”http://images.chinagate.cn/attachement/jpg/site1020/20100313/000cf1a487860d0567ba40.jpg”;

public void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

setContentView(R.layout.main);

//實(shí)例化三個(gè)控件

address=(TextView)findViewById(R.id.textview);

show=(Button)findViewById(R.id.showImage);

pic=(ImageView)findViewById(R.id.iamgeview);

//設(shè)置button的點(diǎn)擊事件,一點(diǎn)擊就可以看到圖片

show.setOnClickListener(new Button.OnClickListener() {

public void onClick(View v) {

try{ //顯示出圖片需要位圖對(duì)象,即星號(hào)表明的這一行,而位圖對(duì)象需要用圖片數(shù)據(jù)來(lái)生成,而這個(gè)數(shù)據(jù)的獲得就是下面那個(gè)方法所指出的。

byte[] data =GetNetImageActivity.this. getData();

* Bitmap bitmap = BitmapFactory.decodeByteArray(data, 0, data.length);

pic.setImageBitmap(bitmap);

}catch(Exception e){}

}

});

}//這個(gè)方法用于獲得圖片的二進(jìn)制數(shù)據(jù)

private byte[] getData() throws Exception {//這個(gè)path就是我們的那張圖片的網(wǎng)絡(luò)地址,URL就像是我們使用瀏覽器時(shí)候的那個(gè)地址欄對(duì)象,他包裝了網(wǎng)址對(duì)象。

URL url = new URL(path);//調(diào)用URL對(duì)象的.openConnection() 返回一個(gè)HttpURLConnection 對(duì)象http

HttpURLConnection http = (HttpURLConnection) url.openConnection();//設(shè)置訪問(wèn)延時(shí)時(shí)間秒數(shù),一般要在5秒以?xún)?nèi)。否則程序可能會(huì)出現(xiàn)錯(cuò)誤

http.setConnectTimeout(3000);//設(shè)置請(qǐng)求的方法,我們可以用GET方法,也可以用POST方法

http.setRequestMethod(“GET”); //調(diào)用http的關(guān)鍵方法:getInputStream(),這個(gè)getInputStream()方法用來(lái)獲取網(wǎng)絡(luò)資源文件的流對(duì)象,比如我們現(xiàn)在做的實(shí)驗(yàn)室獲取圖片,那么getInputStream()方法就給我們圖片數(shù)據(jù)流

InputStream in = http.getInputStream();//我們剛才獲得了圖片數(shù)據(jù)流,還不能馬上轉(zhuǎn)化成我們要顯示的圖片,而是需要進(jìn)行轉(zhuǎn)換,這個(gè)轉(zhuǎn)換方法封裝在getDta()這個(gè)方法里面,這個(gè)getData()方法需要我們傳入InputStream對(duì)象,并返回一個(gè)byte[] 對(duì)象,我們接下來(lái)看看這個(gè)getData()方法

byte[] b = GetNetImageActivity.this. getByte(in);

return b;

}

public byte[] getByte(InputStream i ) throws IOException{//字節(jié)數(shù)組輸出流,這個(gè)流就是起到緩沖的作用,

ByteArrayOutputStream out = new ByteArrayOutputStream();//構(gòu)造一個(gè)字節(jié)數(shù)組,這個(gè)字節(jié)數(shù)組的大小是1024個(gè)字節(jié),用于讓輸入流讀取數(shù)據(jù)到其中 byte[] buffer = new byte[1024];//這個(gè)len起到監(jiān)督貨物有沒(méi)有搬運(yùn)完的作用。如果沒(méi)有搬運(yùn)完,則len不會(huì)小于0,否則等于-1,當(dāng)?shù)扔?1的時(shí)候,就表達(dá)貨物搬運(yùn)完成

int len = 0;//i.read()方法表示把流讀到字節(jié)數(shù)組中,返回的是讀取到的內(nèi)容的長(zhǎng)度,在這個(gè)while里面我們判斷l(xiāng)en的數(shù)值大小,當(dāng)len不小于0的時(shí)候,我們就一直搬運(yùn)貨物,直到小于0我們才不搬

while((len=i.read(buffer))!=-1){//在一邊讀的時(shí)候,我們就一邊寫(xiě),即調(diào)用輸出流的write()方法,把數(shù)據(jù)讀到內(nèi)存里面,讀多少,寫(xiě)多少,意思是每次搬運(yùn)buffer這樣容量的貨物。

out.write(buffer,0,len);

}

i.close();

return out.toByteArray();

}

}

評(píng)論
熱點(diǎn)專(zhuān)題
>>
相關(guān)文章推薦
>>
北大青鳥(niǎo)校園生活 北大青鳥(niǎo)校園活動(dòng) 北大青鳥(niǎo)運(yùn)動(dòng)會(huì) 學(xué)生運(yùn)動(dòng)會(huì) 深圳職業(yè)學(xué)校 深圳北大青鳥(niǎo)南山區(qū) 北大青鳥(niǎo)嘉華學(xué)校 深圳北大青鳥(niǎo)南山區(qū)怎么樣 深圳北大青鳥(niǎo)官網(wǎng) 北大青鳥(niǎo)深圳校區(qū) 深圳北大青鳥(niǎo)怎么樣 北大青鳥(niǎo)到底好不好 廣州北大青鳥(niǎo) 東莞北大青鳥(niǎo) 技校都有什么專(zhuān)業(yè) 電腦技術(shù)學(xué)習(xí)網(wǎng)站 女生讀什么技校好 深圳技術(shù)學(xué)校 職業(yè)技術(shù)學(xué)校招生 高考落榜后干什么 高考落榜后該干什么 高考300分怎么辦 300多分能上什么學(xué)校 深圳高考300分怎么辦 深圳去哪學(xué)網(wǎng)絡(luò)工程 高考200分怎么辦 高考200分能上啥學(xué)校 java是什么意思 職業(yè)技術(shù)學(xué)院 深圳軟件培訓(xùn)機(jī)構(gòu)排名 深圳軟件培訓(xùn) 平湖北大青鳥(niǎo)好嗎 平湖北大青鳥(niǎo)好嗎? 女生學(xué)什么技術(shù) 軟件測(cè)試需要學(xué)什么 現(xiàn)在學(xué)什么專(zhuān)業(yè) 技術(shù)學(xué)校學(xué)什么好 男人學(xué)什么技術(shù)有前途 學(xué)什么專(zhuān)業(yè)有前途 2016年什么行業(yè)前景好 女孩子做什么工作有前途 男生做什么工作有前途 做什么工作有前途 現(xiàn)在什么工作賺錢(qián) 什么工作有前途
好吊妞免费视频在线观看,久久亚洲国产人成综合网,久久精品国产2020,欧美精品综合在线
一区二区国产高清视频在线 | 亚洲一级一在线观看 | 日本片高潮在线观看 | 亚洲欧美中文日韩欧美 | 亚洲中文字幕二区三区 | 亚洲第一视频免费在线 |