- 웹에서 이미지를 가져올때는 때 웹뷰를 사용해서 가져오는 방법과 비동기 다운로더를 사용하는 방법이 있습니다.
- 웹 이미지 크기는 다양하기 때문에 가로/세로 비율에 맞게 이미지를 정확하게 나오게 하려면 가로/세로를 wrap_content 로 주고 받아와야 됩니다
- ImageView 높이를 wrap_content 로 주고 이미지를 비동기 다운로더를 사용해서 가져와봤지만 이미지가 클 경우에 Bitmap too large to be uploaded into a texture 라고 경고가 나옵니다.
- 그래서 WebView 를 사용해서 웹이미지를 가져와 보았는데 이미지 높이를 wrap_content 로 주면 이미지가 나오지 않습니다.
- 이미지 크기에 맞게 웹뷰사이즈를 지정하는 예제입니다
// 웹 이미지 높이 가져오기
int detailImageHeight=0;
int detailImageWidth=0;
String imgUrl="http://www.naxxxx.xxxx";
private void getImgHeight(String imgUrl){
try {
URL url = new URL(imgUrl);
URLConnection conn = url.openConnection();
conn.connect();
BufferedInputStream bis = new
BufferedInputStream(conn.getInputStream());
Bitmap bm = BitmapFactory.decodeStream(bis);
detailImageHeight= bm.getHeight();
detailImageWidth= bm.getWidth(); //이미지 사이즈 가져온다.
bis.close();
} catch (IOException e) {
}
}
// 웹뷰에 이미지 로드하기
private void loadWebView() {
WebView thumbnail = (WebView)findViewById(R.id.webview);
android.view.ViewGroup.LayoutParams lp = thumbnail.getLayoutParams();
lp.width = detailImageWidth;
lp.height = detailImageHeight;
thumbnail.setLayoutParams(lp);
thumbnail.setScrollBarStyle(WebView.SCROLLBARS_OUTSIDE_OVERLAY);
thumbnail.getSettings().setJavaScriptEnabled(true);
thumbnail.setVerticalScrollBarEnabled(false);
thumbnail.loadDataWithBaseURL(null,creHtmlBody(imgUrl), "text/html", "utf-8",null);
}
public String creHtmlBody(String imagUrl) {
StringBuffer sb = new StringBuffer("<HTML>");
sb.append("<HEAD>");
sb.append("</HEAD>");
sb.append("<BODY style='margin: 0; padding: 0'>");
sb.append("<img width=\"100%\" height=\"100%\" src=\"" + imagUrl+ "\">");
sb.append("</BODY>");
sb.append("</HTML>");
return sb.toString();
}
//
더 좋은 방법이 있으면 댓글 부탁드립니다^^;
'안드로이드' 카테고리의 다른 글
R.array 를 스트링 배열로 변환 (0) | 2013.04.18 |
---|---|
Spinner 안에 텍스트 색상지정/정렬방법 (0) | 2013.04.10 |
SharedPreferences 사용법 (0) | 2013.04.05 |
android google map v2 지도 터치시 마커 찍기 (0) | 2013.01.23 |
android google map v2 현재위치 받아오는 법 (3) | 2012.12.31 |