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번 방법은 각 이미지를 받아서 한번더 가공하여 보여지기 때문에 부하가 너무 오래 걸립니다.
아직은 초보 개발자인 제가 쓰레드로 구현하기엔 많이 미흡하지만 지금 열심히 스터디중이기에
곧 좋은 결실 보지 않을까 싶네요!!^^
아무튼 저와 비슷한 궁금증 이나 자바/안드로이드 초보로써 이중고를 겪고 있는 저와 같은 처지에 계신분들을 위해
하나하나 해결해 나갈적마다 흔적을 남겨 놓습니다. 엄한데 시간 뺏지 않길 바라는 마음으로 말입니다
'Android > Tip&Tech' 카테고리의 다른 글
img size 변경 관련 (0) | 2011.03.22 |
---|---|
안드로이드 팁 모음 (0) | 2011.03.22 |
Bitmap Image Resize Tip (0) | 2011.03.22 |
TabHost 에 등록되어있는 버튼의 클릭이벤트 받는법 (0) | 2011.03.21 |
TabActivity / ActivityGroup / Navigation (첨부파일포함) (0) | 2011.03.21 |