 |
|
|  |
Android webview °³¹ß½Ã ¾Ë¾ÆµÖ¾ß ÇÒ °Íµé [Android] |
|
|
 |
8³â Àü |
Android¿¡¼ WebView¶õ
- TextView, Button°ú °°Àº View Á¾·ùÀÇ °´Ã¼ ÀÔ´Ï´Ù. ºê¶ó¿ìÀú¿Í °°Àº ¿ªÇÒÀ» ÇÒ ¼ö ÀÖ´Â View·Î
Á÷Á¢ ű׵éÀ» »ðÀÔÇؼ º¸¿©ÁֱⰡ °¡´ÉÇÏ°í, URLÀ» ¿¬°áÇÏ¿©¼µµ °¡´ÉÇÑ ViewÀÔ´Ï´Ù.
¾Æ·¡´Â °³¹ßÇÏ¸é¼ Èûµé¾ú´ø ºÎºÐ¿¡ ´ëÇؼ °è¼ÓÇؼ Ãß°¡ÇØ ³ª°¥ »ý°¢ ÀÔ´Ï´Ù.
0. Æ۹̼Ç
À¥ºä¸¦ »ç¿ëÇϱâ À§Çؼ± °¡Àå ¸ÕÀú Çسö¾ß ÇÒ °ÍÀÌ Æ۹̼ÇÀÌ´Ù.
¹°·Ð HTML¸¸ dataÇü½ÄÀ¸·Î À¥ºä¿¡ »ðÀÔÇؼ º¸¿©Áà¾ß ÇÏ´Â °æ¿ì´Â ¾Æ´ÏÁö¸¸..
À¥ºä¸¦ »ç¿ëÇÏ´Â ÀÌÀ¯´Â ¿Ø¸¸Çϸé Åë½ÅÀ» Çϱ⠶§¹®¿¡ ÀÎÅÍ³Ý ±ÇÇÑÀÌ ÇÊ¿äÇÏ´Ù.
<uses-permission android:name="android.permission.INTERNET"/>
1. Webview ÇÒ´ç
±âÁ¸ Viewµé°ú ¸¶Âù°¡Áö·Î xml¿¡¼ ÀÛ¾÷ÇÑ °ÍÀ» findViewByIdÇÔ¼ö·Î ºÒ·¯¿Ã ¼ö ÀÖ½À´Ï´Ù.
wv = (WebView)findViewById(R.id.ttttWebView);
2. ÀÚ¹Ù½ºÅ©¸³Æ® °¡´É
À¥ºä°¡ ±âº»ÀûÀ¸·Î ÀÚ¹Ù½ºÅ©¸³Æ®°¡ ¾ÈµÇ°Ô µÇ¾î Àֱ⠶§¹®¿¡ Settings¸¦ ÅëÇØ JavaScript¸¦ EnableÇØÁÝ´Ï´Ù.
wv.getSettings().setJavaScriptEnabled(true);
3. ÁÜ(Zoom)
¿äÁò µé¾î ¹ÝÀÀÇü À¥ÀÌ ¸¹¾Æ¼ ÀÛÀº ȸ鿡 ¸Â´Â LayoutÀ» º¸¿©ÁÖ´Â À¥µµ ¸¹Áö¸¸ ±×·¸Áö ¾ÊÀº ȨÆäÀÌÁöÀÇ °æ¿ì
È®´ë°¡ ¾öû µÇ¾î¼ º¸Àδٰųª Ãà¼Ò°¡ ¾öûµÇ¾î º¸ÀÌ´Â °æ¿ì°¡ ¸¹½À´Ï´Ù.
±âº»ÀûÀ¸·Î Zoom±â´ÉÀÌ µÇÁö ¾Ê¾Æ¼ ¾Æ·¡¿Í °°Àº Äڵ尡 ÇÊ¿äÇÕ´Ï´Ù.
wv.getSettings().setSupportZoom(true);
wv.getSettings().setBuiltInZoomControls(true);
wv.getSettings().setDisplayZoomControls(false);
4. URL Á¢¼Ó
www.naver.com °°Àº URL¿¡ Á¢¼ÓÇϱâ À§Çؼ´Â loadURLÇÔ¼ö¸¦ »ç¿ëÇÕ´Ï´Ù.
wv.loadUrl(url);
5. HTML Ãâ·Â
htmlű׵éÀ» StringÀ¸·Î °¡Áö°í ÀÖÀ» °æ¿ì loadData(data, mimeType, encoding); ÇÔ¼ö¸¦ ÅëÇØ »ç¿ëÇÕ´Ï´Ù.
String data = "<h5>°¡³ª´Ù¶ó¸¶</h5>";
wv.loadData(data, "text/html", "UTF-8");
5-1 O.S ¹öÀüº° HTMLÃâ·Â¹æ¹ý
¾Èµå·ÎÀ̵åÀÇ °æ¿ì¿¡ ÀÌ»óÇÏ°Ô 4.0 ¹Ì¸¸ ¹öÀü°ú 4.0ÀÌ»ó ¹öÀüÀÇ °æ¿ì loadData()ÇÔ¼öÀÇ »ç¿ë¹æ¹ýÀÌ ´Ù¸¨´Ï´Ù.
À§ÀÇ ¹æ¹ýó·³ 'wv.loadData(data, "text/html", "UTF-8");' ¹æ¹ýµµ ÀÖÁö¸¸
wv.loadData(data, "text/html; charset=UTF-8", null); ¹æ¹ýÀ¸·Îµµ »ç¿ë ÇØ¾ß ÇÕ´Ï´Ù.
if (android.os.Build.VERSION.SDK_INT < android.os.Build.VERSION_CODES.ICE_CREAM_SANDWICH) {
// Android 4.0 ¹Ì¸¸ ¹öÀü
wv.loadData(data, "text/html", "UTF-8");
Log.d("TTTT","Webview load < 4.0");
}
else{
// Android 4.1 ÀÌ»ó ¹öÀü
wv.loadData(data, "text/html; charset=UTF-8", null, null);
Log.d("TTTT","Webview load >= 4.0");
}
6. »ó´ë ÁÖ¼Ò º£À̽º ÁÖ¼Ò ¼³Á¤Çϱâ
»ó´ë ÁÖ¼Ò¸¦ óÀ½¿£ ¾î¶»°Ô ´ëÀÀÇÒÁö ¸ô¶ó¼ StringÀ» replace()ÇÔ¼ö¸¦ ÀÌ¿ëÇؼ ¾ÕºÎºÐ¿¡ ÁÖ¼Ò¸¦ »ðÀÔÇß¾ú´Âµ¥...
±×·² ÇÊ¿ä ¾øÀÌ ¾Èµå·ÎÀ̵忡¼ ÀÌ¹Ì Á¦°øÇÕ´Ï´Ù.
¾Æ·¡´Â 5-1 ¹æ¹ýó·³ O.S ¹öÀüº°·Î Àû¿ëµÇ°Ô ÄÚµù Çغ» ¹æ¹ýÀÔ´Ï´Ù.
if (android.os.Build.VERSION.SDK_INT < android.os.Build.VERSION_CODES.ICE_CREAM_SANDWICH) {
// Android 4.0 ÀÌÇÏ ¹öÀü
wv.loadDataWithBaseURL("http://sungho0459.blog.me/", data, "text/html", "UTF-8", null);
Log.d("TTTT","Webview load < 4.0");
}
else{
// Android 4.1 ÀÌ»ó ¹öÀü
wv.loadDataWithBaseURL("http://sungho0459.blog.me/", data, "text/html; charset=UTF-8", null, null);
Log.d("TTTT","Webview load >= 4.0");
}
7. À¥ºä WrapContent·Î ²ËÂ÷°Ô Çϱâ
Webview Fill WrapContents
À¥ºä¸¦ °¡º¯ »çÀÌÁî(WrapContent)·Î ¼³Á¤Çؼ ºÒ·¯¿Ã À¥ÆäÀÌÁöÀÇ Àüü »çÀÌÁî ¸¸Å ±æ°Ô ÇÏ°í ½ÍÀ» ¶§ »ç¿ëÇÏ´Â ¹æ¹ýÀÔ´Ï´Ù.
WebViewClient°´Ã¼¸¦ »ý¼ºÇؼ ¼³Á¤ÇØ ÁÝ´Ï´Ù. onPageFinished()ÇÔ¼ö¸¦ ¿À¹ö¶óÀ̵å ÇØÁÝ´Ï´Ù.
wv.setWebViewClient(new WebViewClient() {
@Override
public void onPageFinished(final WebView view, final String url) {
super.onPageFinished(view, url);
/*
* ȸé²ËÂù WebView·Î ¹Ù²Ù±â
*
* invalidate¸¦ ¾ÈÇØÁÖ°Ô µÇ¸é
* webview¿¡ ½ºÅ©·Ñ¹Ù¸¸ »ý±â°Ô µÇ¼ ȸéÀÌ º¸±â ¾ÈÁÁ°Ô µÇ¾î ¹ö¸°´Ù.
* ±×·¯¹Ç·Î ²À invalidate¸¦ ÇØÁà¾ß ÇÑ´Ù.
*/
wv.invalidate();
}
});
8. ¸µÅ© Ŭ¸¯½Ã ¿¬°á °ü¸®
¸µÅ© Ŭ¸¯½Ã¿¡ Ŭ¸¯ÇÑ urlÀ» ÆÇ´ÜÇÏ¿© Ãß°¡ÀûÀÎ ¾×¼ÇÀ» ÃëÇÒ ¼ö ÀÖ´Ù.
wv.setWebViewClient(new WebViewClient() {
@Override
public boolean shouldOverrideUrlLoading(WebView view, String url) {
Log.d("TTTT","WebView load url:"+url);
if(url.startsWith("http:"))
{
Intent i = new Intent(mContext, ActivityCatchWebView.class);
i.putExtra("url", url);
i.putExtra("name", item.getP_Name());
startActivity(i);
return true;
}
return super.shouldOverrideUrlLoading(view, url);
}
});
9. ÄÁÅÙÃ÷ »çÀÌÁî ¸ÂÃß±â
À¥ ÁÖ¼Ò·Î ¿¬°áµÈ ȨÆäÀÌÁö°¡ PC¹öÀü ¹Û¿¡ Á¸ÀçÇÏÁö ¾Ê¾Æ¼ ¸ð¹ÙÀÏ¿¡¼ º¸°Ô µÉ¶§
ÄÁÅÙÃ÷ »çÀÌÁî°¡ ³ÑÃļ È®´ëµÇ º¸ÀÌ´Â °æ¿ì°¡ Á¸ÀçÇÕ´Ï´Ù.
ÀÌ·² ¶§ ¾²´Â Äڵ尡 ¾Æ·¡ÀÇ ÄÚµåÁö¸¸, ÃֽŹöÀü SDK¿¡¼´Â Áö¿øÇÏÁö ¾Ê´Â ÇÔ¼ö°¡ µÇ¾î ¹ö·È½À´Ï´Ù.
ÀÏ´Ü ¶«»§¿ëÀ¸·Î ¾²½Ã¶ó°í ¿Ã·Áµå¸³´Ï´Ù ¤»¤»;
wv.getSettings().setLayoutAlgorithm(LayoutAlgorithm.SINGLE_COLUMN);
9-1. ÄÁÅÙÃ÷ »çÀÌÁî ¸ÂÃß±â (API 4.4 Kitkat ÀÌ»ó)
ŶÄÏ À̻󿡼 ºÎÅÍ´Â LayoutAlhorithm.SINGLE_COLUMNÀÌ Áö¿øÇÏÁö ¾Ê´Â´Ù°í ÇÑ´Ù.
±×·¡¼ °¡·Î »çÀÌÁî·Î ¸ÂÃß±â À§Çؼ± ¾Æ·¡ÀÇ Äڵ带 »ç¿ëÇÏ¸é µÈ´Ù°í Çϴµ¥ Á¤ÀÛ Á¦´ë·Î µ¿ÀÛÇÏÁö ¾Ê´Â °æ¿ì°¡ ¸¹´Ù.
wv.getSettings().setLoadWithOverviewMode(true);
10. À¥ºäÀÇ µÚ·Î°¡±â
¾Û ³»ºÎ¿¡ ÀÖ´Â À¥ºä°¡ ¾Æ´Ñ ´Ù¸¥ ¹öÆ°À» Ŭ¸¯½Ã À¥ºäÀÇ È÷½ºÅ丮¸¦ °Å²Ù·Î °¡°Ô ¸¸µé ¼ö ÀÖ´Ù.
wv.loadUrl() ȤÀº Ŭ¸¯À¸·Î ÀÎÇÑ À̵¿ µî ¸ðµç À¥ºä¿¡¼ ÀÏ¾î³ ÆäÀÌÁö À̵¿ÀÌ ÀúÀåµÇ¾î Àִµ¥ À̸¦ Back½Ãų ¼ö ÀÖ´Â ÇÔ¼ö°¡ ÀÖ´Ù.
wv.goBack();
11-1. À¥ºäÀÇ È÷½ºÅ丮¸¦ ¾Ë ¼ö ÀÖ´Ù.
À¥ºä ³»ºÎÀÇ ÆäÀÌÁö ÁÖ¼Ò°¡ ¹Ù²ï °ÍÀ» ¸ðµÎ ÀÚµ¿À¸·Î ÀúÀåµÇ°í ÀÖ´Ù.
WebBackForwardList mWebBackForwardList = mWebView.copyBackForwardList();
11-2. À¥ºäÀÇ È÷½ºÅ丮ÀÇ À妽º
À¥ ºä¸¦ ÅëÇؼ À̵¿ÇÑ ÁÖ¼ÒÀÇ À妽º °¡ ÇöÀç ¸î¹ø° ÀÎÁö ¾Ë ¼ö ÀÖ´Ù.
WebBackForwardList mWebBackForwardList = mWebView.copyBackForwardList();
mWebBackForwardList.getCurrentIndex();
11-3. È÷½ºÅ丮 À妽º¸¦ ÀÌ¿ëÇÑ URL ºÒ·¯¿À±â
À妽º¸¦ ÅëÇؼ È÷½ºÅ丮 ¸®½ºÆ®·Î ºÎÅÍ URLÀ» °¡Á® ¿Ã ¼ö ÀÖ´Ù.
WebBackForwardList mWebBackForwardList = mWebView.copyBackForwardList();
String historyUrl = mWebBackForwardList.getItemAtIndex(mWebBackForwardList.getCurrentIndex()-1).getUrl();
|
|
̵̧ : 586 |
̵̧
¸ñ·Ï
|
|
|  |
|