drawable에 있는 이미지가 아닌 외부 이미지를 사용하는 방법을 소개합니다.


1. WebView 를 이용하는 방법


*.xml 에 아래와 같이 WebView영역을 정의합니다.

<WebView android:id="@+id/ID_IMG"

            android:layout_width="80dip"

            android:layout_height="60dip"

            android:layout_gravity="center_vertical|center_horizontal"

            android:scrollbars="none"

            android:clickable="false"

            android:focusable="false"></WebView>

*.java 에 아래와 같이 소스를 적용하면 끝.

// 주의: 안드로이드 버그로 ListView 안에 클릭 가능한 객체(ex. Button, WebView 등)가 존재하면

// ListView 를 클릭했을때 호출되는 OnListItemClick 이 호출되지 않습니다.

// 그래서 WebView 의 focusable을 false 로 만들어 줘야 합니다.

// 더 주의해야 할 사항은 xml에서 설정해도 적용되지 않으므로 반드시 코드상에 한번더 명시해줘야 합니다.

WebView wv = (WebView) v.findViewById(R.id.ID_IMG);

wv.setFocusable(false);

if (wv != null) wv.loadUrl( "https://t1.daumcdn.net/cfile/tistory/1946B11A4C5606ED3C" );




2. BitMap 을 이용한 방법


*.xml 에 아래와 같이 ImageView영역을 정의합니다.

<ImageView android:id="@+id/ID_IMG" android:src="@drawable/icon"

            android:adjustViewBounds="true" android:layout_width="wrap_content"

            android:layout_height="60dip" android:layout_margin="5px"

            android:visibility="gone"/>

*.java 에 아래와 같이 소스를 적용하면 끝.

ImageView iv = (ImageView) v.findViewById(R.id.ID_IMG);

Bitmap bm = LoadImage( "https://t1.daumcdn.net/cfile/tistory/1946B11A4C5606ED3C" ) ;

Bitmap resize = Bitmap.createScaledBitmap(bm, 30, 40,true);

iv.setImageBitmap( resize ) ;



3. Drawable 을 이용한 방법


*.xml 에 아래와 같이 ImageView영역을 정의합니다.

<ImageView android:id="@+id/ID_IMG" android:src="@drawable/icon"

            android:adjustViewBounds="true" android:layout_width="wrap_content"

            android:layout_height="60dip" android:layout_margin="5px"

            android:visibility="gone"/>

*.java 에 아래와 같이 소스를 적용하면 끝.

ImageView iv = (ImageView) v.findViewById(R.id.ID_IMG);

Drawable drawable = LoadImageFromWebOperations( "https://t1.daumcdn.net/cfile/tistory/1946B11A4C5606ED3C" );

iv.setImageDrawable(drawable);




4. URL 을 이용한 방법


*.xml 에 아래와 같이 ImageView영역을 정의합니다.

<ImageView android:id="@+id/ID_IMG" android:src="@drawable/icon"

            android:adjustViewBounds="true" android:layout_width="wrap_content"

            android:layout_height="60dip" android:layout_margin="5px"

            android:visibility="gone"/>

*.java 에 아래와 같이 소스를 적용하면 끝.

ImageView iv = (ImageView) v.findViewById(R.id.ID_IMG);

try { 

URL url = new URL("https://t1.daumcdn.net/cfile/tistory/1946B11A4C5606ED3C"); 

URLConnection conn =

 url.openConnection(); 

conn.connect(); 

BufferedInputStream  bis = new BufferedInputStream(conn.getInputStream());

Bitmap bm = BitmapFactory.decodeStream(bis); bis.close();

iv.setImageBitmap(bm);


} catch (IOException e) {

Logger.e("Androes", " " + e); 

}



이렇게 다양한 방법이 있긴 하지만 아래와 같이 이미지 목록을 노출하고자 할 경우엔 1번 방법을 선호합니다.

이유인즉, 2번 ~ 4번 방법은 각 이미지를 받아서 한번더 가공하여 보여지기 때문에 부하가 너무 오래 걸립니다.

아직은 초보 개발자인 제가 쓰레드로 구현하기엔 많이 미흡하지만 지금 열심히 스터디중이기에

곧 좋은 결실 보지 않을까 싶네요!!^^


아무튼 저와 비슷한 궁금증 이나 자바/안드로이드 초보로써 이중고를 겪고 있는 저와 같은 처지에 계신분들을 위해

하나하나 해결해 나갈적마다 흔적을 남겨 놓습니다. 엄한데 시간 뺏지 않길 바라는 마음으로 말입니다

+ Recent posts