하이브리드앱, 웹뷰(WebView) 설정하기 - 안드로이드
안드로이드 스튜디오 설치하고. https://developer.android.com/studio/
AndroidManifest.xml
// 인터넷 사용할꺼야 라고 선언
<uses-permission android:name="android.permission.INTERNET" />
layout.xml
//웹뷰 등록 html로 비교하면 iframe 과 비슷하겠네요.
<WebView
android:id="@+id/webview"
android:layout_width="match_parent"
android:layout_height="match_parent"></WebView>
Java
private WebView mWebView; //웹뷰
private WebSettings mWebSettings; //웹뷰세팅
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
// 웹뷰 세팅
mWebView = (WebView)findViewById(R.id.webview); //레이어와 연결
mWebView .setWebViewClient(new WebViewClient()); // 클릭시 새창 안뜨게
mWebSettings = mWebView.getSettings(); //세부 세팅 등록
mWebSettings.setJavaScriptEnabled(true); // 자바스크립트 사용 허용
mWebView.loadUrl("http://m.nate.com"); //원하는 URL 입력
}
웹뷰 기본 옵션
mWebView.goBack(); //뒤로가기
mWebView.goForward(); //앞으로가기
mWebView.reload(); //새로고침
mWebView.clearCache(true); // 캐시 지우기
mWebView.reload(); // 현재 웹뷰 새로고침
mWebView.stopLoading(); // 로딩 중단
//스크롤 없애기
mWebView.setVerticalScrollBarEnabled(false);
mWebView.setHorizontalScrollBarEnabled(false);
웹뷰 세부 옵션
wvs = mWebView.getSettings();
wvs .setWebViewClient(new WebViewClient()); // 클릭시 새창 안뜨게
wvs .setJavaScriptEnabled(true); //자바스크립트 사용
wvs .setWebChromeClient(new webViewChrome()); // alert 경고창 사용
//화면 비율 관련 - 안드로이드 TV셋탑에서 웹뷰 사용할때 웹페이지 viewport가 적용안되서.
wvs .setUseWideViewPort(true); //wide viewport를 사용하도록 설정
wvs.setLoadWithOverviewMode(true); // 컨텐츠가 웹뷰보다 클 경우 스크린 크기에 맞게 조정
wvs.setInitialScale(35); //비율 조절
wvs.setDefaultFontSize(8); // 기본 폰트 사이즈 지정
wvs.setMinimumFontSize(8); //폰트 사이즈 지정
//웹뷰 멀티 터치 가능하게 (줌기능)
wvs .getSettings().setBuiltInZoomControls(true); //줌 아이콘 사용 설정
wvs .getSettings().setSupportZoom(false);
wvs .setPluginState(WebSettings.PluginState.ON_DEMAND); // 플러그인을 사용 설정
wvs .setCacheMode(WebSettings.LOAD_NO_CACHE); // 웹뷰가 캐시를 사용하지 않도록 설정
wvs .setDefaultZoom(WebSettings.ZoomDensity.FAR); // 페이지 크기 자동 조절?
뒤로 가기 버튼
@Override
public boolean onKeyDown(int keyCode, KeyEvent event) {
if ((keyCode == KeyEvent.KEYCODE_BACK) && mWebView.canGoBack()) {
mWebView.goBack();
return true;
}
return super.onKeyDown(keyCode, event);
}
webViewExampleSettings.setSaveFormData(true); 입력된 데이터 저장 여부
webViewExampleSettings.setSavePassword(true); 입력된 비밀번호 저장 여부