Mobile/Android(JAVA)
[Android] WebView 세팅
김당
2023. 1. 24. 20:26
Android에서 웹뷰를 구현하기 위해서는 WebView 객체를 사용한다.
하지만 WebView 객체만으로는 화면을 보여줄 수 있을 뿐이며 웹뷰 안에서의 다른 기능(ex. 버튼) 들은 동작할 수 없다.
이러한 것들을 제어하기 위해 여러 설정들을 통해 웹뷰를 세팅할 수 있는데 그 방법에는 크게 3가지가 있다.
1. WebView Settings
: 웹뷰의 가장 큰 범주에서 웹뷰를 세팅한다.
private WebSettings webSettings;
@Override
protected void onCreate(Bundle savedInstanceState) {
...
webSettings = webView.getSettings();
webSettings.setJavaScriptEnabled(true); //자바스크립트 사용 여부
webSettings.setSupportMultipleWindows(false); // 새창 띄우기 허용 여부
webSettings.setJavaScriptCanOpenWindowsAutomatically(false); // 자바스크립트 새창 띄우기(멀티뷰) 허용 여부
webSettings.setLoadWithOverviewMode(true); // 메타태그 허용 여부
webSettings.setUseWideViewPort(true); // 화면 사이즈 맞추기 허용 여부
webSettings.setSupportZoom(false); // 화면 줌 허용 여부
webSettings.setBuiltInZoomControls(false); // 화면 확대 축소 허용 여부
webSettings.setLayoutAlgorithm(WebSettings.LayoutAlgorithm.SINGLE_COLUMN); // 컨텐츠 사이즈 맞추기
webSettings.setCacheMode(WebSettings.LOAD_NO_CACHE); // 브라우저 캐시 허용 여부
webSettings.setDomStorageEnabled(true); // 로컬저장소 허용 여부
}
2. WebViewClient
: 웹페이지 로딩시 생기는 콜백함수들로 구성되어 있어 웹페이지 로딩의 시작과 끝을 알 수 있다.
2-1. 자주 사용되는 오버라이드 함수
함수명 | 반환 | 호출시점 | 설명 |
onPageStarted | void | 페이지가 로딩되는 첫 시점에 한번 호출된다. | |
shouldOverrideUrlLoading | boolean | 웹뷰에서 url이 로딩될 때 호출되어 앱에게 제어할 기회를 준다. (사용자 이벤트로 새로운 url이 로딩될 때 ) | 앱이 url로딩을 제어할 경우 true, 아니라면 default로 fault 반환 |
onPageFinished | void | 페이지 로딩이 끝나면 호출된다. |
3. WebChromeClient
: 웹페이지에서 일어나는 콜백함수들로 구성되어 있다. (ex. 새 창 띄우기, 파일 첨부)
3-1. 자주 사용되는 오버라이드 함수
함수명 | 반환 | 호출시점 | 설명 |
onProgressChanged | void | 페이지가 로딩되는 중간중간 호출된다. | 현재 로딩되는 페이지의 상태를 알려준다. |
onCreateWindow | boolean | 웹에서 새 창을 열 때 호출된다. (window.open() 사용 시) | 앱이 새 창을 여는 작업을 하면 true, 그게 아니면 default로 false 반환 |
onCloseWindow | void | 웹뷰가 창을 닫을 때 호출된다. |
4. WebView 호출 flow
*참고자료