[안드로이드] 안드로이드스튜디오(Android Studio), 웹뷰(WebView) 사용하기, 안드로이드 예제, 안드로이드 강좌
참고 : 이미지서명은 제 와이프 블로그 이미지서명입니다.
안녕하세요 정보처리마법사 입니다.
이번 포스팅의 주제는 웹뷰(WebView) 사용하기 및 웹페이지 로딩 진행 상태 보여주기에 관한 내용입니다.
안드로이드에서 이미 설치되어있는 브라우저를 호출해서 원하는 웹 페이지를 로딩할 수 있지만 단순히 다른 애플리케이션을 호출하는 것이기 때문에 원하는 대로 조정할 수 없습니다. 원하는 기능으로 동작하는 브라우저를 직접 만들어야 하는 경우가 생기는데 이때 사용할 수 있는 것이 바로 웹뷰(WebView)입니다.
이 웹뷰는 단순히 HTML을 화면에 렌더링 하는 역할만 하기 때문에 인터넷익스플로러나 크롬, 사파리 같은 웹브라우저 처럼 동작하게 만들기 위해선 많은 작업을 거쳐야 합니다.
웹뷰를 사용하기 위해 알아둬야 하는 주요 클래스가 있는데 첫 번째는 는 웹뷰 설정과 관련된 WebSettings 클래스이고, 두 번째는 웹 페이지 로딩을 담당하는 WebViewClient 클래스이고, 세 번째는 자바스크립트 경고 등을 처리하는 WebChromeClient 입니다.
먼저 웹뷰를 사용하는 방법을 살펴보겠습니다.
일단 레이아웃에 웹뷰를 하나 추가합니다. 그럼 벌써 반 이상 끝났습니다.
이제 웹뷰를 액티비티에서 불러서 원하는 URL을 로딩하게 만들면 됩니다.
웹뷰에서 원하는 웹페이지를 로딩하기 위해서 loadUrl()메소드를 사용해야 합니다. 이 메소드에 원하는 URL을 지정하면 해당 웹페이지가 화면에 보이게 됩니다. 그리고 웹 페이지에서 자바스크립트가 사용되는 것을 허용하기 위해서는 웹뷰의 getSettings() 메소드가 반환하는 WebSettings 객체의 setJavaScriptEnabled() 메소드를 호출해야 합니다. WebSettings는 웹뷰의 상태를 관리하는 클래스입니다.
android.webkit.WebSettings 클래스의 메소드
void setBuiltInZoomControls(boolean enabled) : 줌 컨트롤의 사용 여부를 지정합니다.
synchronized void setDefaultFontSize(int size)
: 기본 폰트 크기를 지정합니다. size에는 1~72 범위의 값이 올 수 있습니다.
void setDefaultZoom(WebSettings.ZoomDensity zoom) : 기본 줌 상태를 지정합니다. ZoomDensity.CLOSE, ZoomDensity.MEDIUM, ZoomDensity.FAR 를 지정할 수 있습니다.
synchronized void setJavaScriptCanOpenWindowsAutomatically(boolean flag)
: 자바스크립트에서 윈도우를 새로 열 수 있는지를 지정합니다.
자바스크립트의 window.open()에 적용됩니다.
synchronized void setJavaScriptEnabled(boolean flag) : 자바스크립트 사용 여부를 설정합니다.
void setSaveFormData(boolean save) : 폼 데이터의 저장 여부를 설정합니다.
void setSavePassword(boolean save) : 폼 데이터 중 패스워드의 저장 여부를 설정합니다.
자주 쓰이는 위 메소드 이외에도 수 많은 메소드가 있으므로 좀 더 복잡한 기능을 필요로 한다면 안드로이드 API를 추가적으로 살펴보면 되겠습니다.
Line 25
webView.setWebViewClient(new MyWebViewClient());
이 코드를적용하지 않을 경우 로딩된 웹 페이지에서 다른링크를 클릭할 경우 기본 웹 브라우저가 실행됩니다.
링크를 클릭했을 때 현재 웹뷰에서 로딩이 되게 하고 싶다면 웹 페이지 로딩을 담당하는 WebViewClient의 객체를 생성해서 setWebViewClient()메소드를 지정해야 합니다. 그래서 이 예제에서는 WebViewClient를 상속한 MyWebViewClient클래스를 만들고 shouldOverrideUrlLoading()메소드를 오러바이드 하였습니다.
웹뷰를 사용한 예제를 실행하려면 인터넷을 사용해야 하므로 반드시 AndroidManifest.xml 에 인터넷 권한을 줘야합니다.
Line 5 와 같이 인터넷 권한을 주면 추가하면 됩니다.
디바이스에서 실행을 하니 잘 작동합니다.
Line18 ~ Line23 의 옵션들을 주석처리 해보면서 차이점을 비교해보면 좋을 것 같습니다.
이상으로 포스팅을 마칩니다. 감사합니다.
참고서적 : 200개의 단계별 예제로 배우는 안드로이드 4.0 [제이펍]
Fin.
잘 못 된 정보가 있으면 말씀해주세요~
공감버튼 클릭은 작성자에게 큰 힘이 됩니다. 행복한 하루 되세요.