 |
|
|  |
À¥ºä(WebView)¿¡ °üÇÑ °íÂû |
|
|
 |
10³â Àü |
# Layout
±×³É <WebView> ÅÂ±× ³Ö°í ±× ¾È¿¡ ¼Ó¼º ³Ö¾îÁÖ¸é ³¡...
# WebViewClient¸¦ »ó¼Ó¹ÞÀº Ŭ·¡½º Á¤ÀÇ
WebViewClient Ŭ·¡½º¸¦ »ó¼Ó¹Þ¾Æ ±¸ÇöÇÕ´Ï´Ù. ÀÌ ¾È¿¡ shouldOverrideUrlLoading() ¸Þ¼Òµå¸¦ ±¸ÇöÇÏÁö ¾ÊÀ¸¸é À¥ºä ³» ¸µÅ© ÅÍÄ¡ÇÒ ¶§ ¿¬°á ÇÁ·Î±×·¥(±âº» ºê¶ó¿ìÀú, Å©·Ò µî) ¼³Á¤Ã¢ÀÌ ¶å´Ï´Ù.
import android.webkit.*;
class WebBrowserClient extends WebViewClient {
/*
* À¥ºä ³» ¸µÅ© ÅÍÄ¡ ½Ã »õ·Î¿î âÀÌ ¶ßÁö ¾Ê°í
* ÇØ´ç À¥ºä ¾È¿¡¼ »õ·Î¿î ÆäÀÌÁö°¡ ·ÎµùµÇµµ·Ï ÇÔ
*/
public boolean shouldOverrideUrlLoading(WebView view, String url) {
view.loadUrl(url);
return true;
}
}
# WebView °´Ã¼ »ý¼º ¹× ¼¼ÆÃ
import android.webkit.*;
public class MainActivity extends Activity {
private WebView webView;
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
// À¥ºä ¼³Á¤
webView = (WebView)findViewById(R.id.webView);
WebSettings webSettings = webView.getSettings();
webSettings.setUseWideViewPort(true);
webSettings.setSupportZoom(true); // ÁÜ ¼Æ÷ÅÍ Ç¥½Ã
webSettings.setBuiltInZoomControls(true); // ¸ÖƼÅÍÄ¡ ÁÜ Áö¿ø
webSettings.setJavaScriptEnabled(true);
webView.setWebViewClient(new WebBrowserClient());
// À¥ºä¿¡ À¥ »çÀÌÆ® Ç¥½Ã
String url = "http://www.musictrot.com";
webView.loadUrl(url);
}
}
# WebView ÃʱâÈ ¹æÁö
ȸé ȸÀü½Ã À¥ºä°¡ ÃʱâȵÇÁö ¾Êµµ·Ï ÇÕ´Ï´Ù. ¾×ƼºñƼ Ŭ·¡½º ¾È¿¡ onConfigurationChanged() ¸Þ¼Òµå¸¦ ±¸ÇöÇÕ´Ï´Ù.
/*
* ȸé ȸÀü½Ã ȸéÀÌ Ãʱâȵǹö¸®´Â ¹®Á¦ ¹æÁö
* ¸Å´ÏÆ佺Ʈ ¾×ƼºñƼ ¼Ó¼º¿¡
* android:configChanges="orientation|screenSize"
* Ãß°¡ ÇÊ¿ä
*/
public void onConfigurationChanged(Configuration newConfig){
super.onConfigurationChanged(newConfig);
}
¹Ýµå½Ã ¸Å´ÏÆ佺Ʈ ÆÄÀÏ¿¡ ´ÙÀ½°ú °°ÀÌ ¾×ƼºñƼ ¼Ó¼ºÀ» Ãß°¡ÇØ¾ß ÇÕ´Ï´Ù.
<activity
android:name="com.heroism.webviewapp.MainActivity"
android:configChanges="orientation|screenSize"
android:label="@string/app_name" >
</activity>
# µÚ·Î°¡±â
¾×ƼºñƼ Ŭ·¡½º ¾È¿¡ onKeyDown() ¸Þ¼Òµå¸¦ ±¸ÇöÇϸé back Å°¸¦ ´·¶À»¶§ ÀÌÀü ÆäÀÌÁö¸¦ º¸¿©ÁÖµµ·Ï ÇÒ ¼ö ÀÖ½À´Ï´Ù. À̶§ canGoBack() ¸Þ¼Òµå·Î ÀÌÀü ÆäÀÌÁö·Î À̵¿ÇÒ ¼ö ÀÖ´ÂÁö ÆÇ´ÜÇÑ ÈÄ goBack() ¸Þ¼Òµå¸¦ È£ÃâÇÏ¿© ÀÌÀü ÆäÀÌÁö¸¦ º¸¿©ÁÝ´Ï´Ù.
ù ÆäÀÌÁö »ó¿¡¼ back Å°¸¦ ¿¬¼ÓÀ¸·Î µÎ ¹ø ÅÍÄ¡ÇÏ¸é ¾ÛÀ» Á¾·á½ÃÅ°°Ô ÇÒ ¼ö ÀÖ½À´Ï´Ù.
// Çڵ鷯, Ç÷¡±×
private Handler mHandler;
private boolean mFlag = false;
// Çڵ鷯 °´Ã¼ ¼³Á¤ (onCreate() ¸Þ¼Òµå ¾È¿¡ ±¸Çö!!!)
mHandler = new Handler() {
@Override
public void handleMessage(Message msg) {
if(msg.what == 0) {
mFlag = false;
}
}
}
public boolean onKeyDown(int keyCode, KeyEvent event) {
// ¹é Å°¸¦ ÅÍÄ¡ÇÑ °æ¿ì
if(keyCode == KeyEvent.KEYCODE_BACK){
// ÀÌÀü ÆäÀÌÁö¸¦ º¼ ¼ö ÀÖ´Ù¸é ÀÌÀü ÆäÀÌÁö¸¦ º¸¿©ÁÜ
if(webView.canGoBack()){
webView.goBack();
return false;
}
// ÀÌÀü ÆäÀÌÁö¸¦ º¼ ¼ö ¾ø´Ù¸é ¹éÅ°¸¦ Çѹø ´õ ÅÍÄ¡Çؼ Á¾·á
else {
if(!mFlag) {
Toast.makeText(this, "'µÚ·Î' ¹öÆ°À» Çѹø ´õ ´©¸£½Ã¸é Á¾·áµË´Ï´Ù.", Toast.LENGTH_SHORT).show();
mFlag = true;
mHandler.sendEmptyMessageDelayed(0, 2000); // 2ÃÊ ³»·Î ÅÍÄ¡½Ã
return false;
} else {
finish();
}
}
}
return super.onKeyDown(keyCode, event);
}
|
|
̵̧ : 663 |
̵̧
¸ñ·Ï
|
|
|  |
|