Android 에서 네트워크 그림 보이 기

본문 참조:  http://developer.51cto.com/art/201001/180968.htm
...에 있다
Android
인터넷 사진 을 표시 하 는 것 은 비교적 간단 하 다.View 에 대응 하 는 그림 을 불 러 오 는 작업 을 시작 할 때 통과 해 야 합 니 다.
setTag()
이 View 의 tag 를 그림 의 URL 로 설정 합 니 다.실제 이 그림 을 가 져 올 때 해당 URL 이 View 의 TAG 와 일치 하 는 지 확인 하고 일치 할 때 만 이 그림 을 이 View 에 실제 적용 합 니 다.
실례 1
Internet ImageDemoActivity.java 파일

package com . lenovo . robin . test ;
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 . AsyncTask ;
import android . os . Bundle ;
import android . widget . ImageView ;
public class InternetImageDemoActivity extends Activity {
Bitmap bmImg ;
ImageView imView ;
@Override
public void onCreate ( Bundle savedInstanceState ) {
super . onCreate ( savedInstanceState );
setContentView ( R . layout . internet_image_demo );
imView = ( ImageView ) findViewById ( R . id . imageView1 );
String imageUrl = "http://img6.ph.126.net/hBiG96B8egigBULxUWcOpA==/109212290980771276.jpg" ;
final ImageView imageView = imView ;
imageView . setTag ( imageUrl );
ImageLoadedCallback callback = new ImageLoadedCallback () {
@Override
public void loaded ( Bitmap bitMap , String url ) {
// TODO Auto-generated method stub
if (url.equals(imageView.getTag())) {
imageView.setImageBitmap(bitMap);
}
}
};
new DownloadImageTask ( callback ). execute ( imageUrl );
}
}

class DownloadImageTask extends AsyncTask < String , Integer , Bitmap > {
ImageLoadedCallback callback = null ;
String url = null ;
DownloadImageTask ( ImageLoadedCallback callback ) {
this . callback = callback ;
}
protected Bitmap doInBackground ( String ... urls ) {
URL myFileUrl = null ;
Bitmap bitmap = null ;
url = urls [ 0 ];
try {
myFileUrl = new URL ( url );
} catch ( MalformedURLException e ) {
e . printStackTrace ();
}
HttpURLConnection conn = null ;
InputStream is = null ;
try {
conn = ( HttpURLConnection ) myFileUrl
. openConnection ();
conn . setDoInput ( true );
conn . connect ();
is = conn . getInputStream ();
bitmap = BitmapFactory . decodeStream ( is );
is . close ();
} catch ( IOException e ) {
e . printStackTrace ();
}
finally
{
if ( conn != null )
{
try {
conn . connect ();
} catch ( IOException e ) {
// TODO Auto-generated catch block
e.printStackTrace();
}
conn=null;
}
if(is!=null)
{
try {
is.close();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
is=null;
}
}
return bitmap;
}
protected void onPostExecute ( Bitmap bitMap ) {
callback . loaded ( bitMap , url );
}
}


interface ImageLoadedCallback {
public void loaded ( Bitmap bitMap , String url );
}

关于 AsyncTask请参照《 AsyncTask简介
布局文件internet_image_demo.xml

<RelativeLayout xmlns:android = "http://schemas.android.com/apk/res/android"
    xmlns:tools = "http://schemas.android.com/tools"
    android:layout_width = "match_parent"
    android:layout_height = "match_parent" >
    <ImageView
        android:id = "@+id/imageView1"
        android:layout_width = "match_parent"
        android:layout_height = "match_parent"
        android:layout_alignLeft = "@+id/button1"
        android:layout_below = "@+id/textView1"
        android:layout_marginTop = "34dp"
  />
</RelativeLayout>

另外在AndroidManifest.xml中需要添加以下权限,以便访问网络

<uses-permission android:name="android.permission.INTERNET" />


끝!

좋은 웹페이지 즐겨찾기