본문 바로가기

안드로이드

WebView 높이 wrap_content 주는 방법

- 웹에서 이미지를 가져올때는 때 웹뷰를 사용해서 가져오는 방법과 비동기 다운로더를 사용하는 방법이 있습니다.

- 웹 이미지 크기는 다양하기 때문에 가로/세로 비율에 맞게 이미지를 정확하게 나오게 하려면 가로/세로를        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();

}


//


더 좋은 방법이 있으면 댓글 부탁드립니다^^;