안드로이드 웹뷰(WebView) 사용하기
웹뷰
- 웹뷰는 앱 내에 웹화면을 띄우는 뷰를 말합니다.
웹뷰는 인터넷을 사용하기 때문에 웹뷰를 사용하기 위해선 인터넷 접속권한을 등록해야합니다.
manifests 파일에 들어가서 아래에 밑줄 쳐진 permission을 추가합니다.
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.examples.androidpractice8">
<uses-permission android:name="android.permission.INTERNET"/>
<application
android:allowBackup="true"
android:icon="@mipmap/ic_launcher"
android:label="@string/app_name"
android:supportsRtl="true"
android:theme="@style/AppTheme">
<activity android:name=".MainActivity">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
</application>
</manifest>
웹뷰를 사용할 레이아웃에 들어가서 웹뷰를 추가합니다.
액티비티 파일에서 웹뷰를 선언 및 객체화를 시켜주고 여러가지 설정이 있는데 몇가지 예를 들면
.setJavaScriptEnabled - 웹뷰에서 자바 스크립트 사용
.setSupportZoom - 손으로 확대, 축소를 할 수 있도록 사용
.setBuiltInZoomControls - WebView 내장 Zoom 사용
등이 있습니다.
이 상태에서 loadUrl을 통해 페이지를 불려오려고 하면 외부 브라우저를 실행하게 됩니다.
웹뷰 내에서 웹 페이지를 돌아다니기 위해선 WebViewClient의 shouldOverrideUrlLoading 함수를 사용해야합니다.
.onPageStarted() - 웹뷰에서 url이 로드 될때 호출 되는 함수
.onPageFinished() - 웹뷰에서 url 로딩이 완료되면 호출 되는 함수
위에 2가지 메소드를 추가하면 url이 로드될 때, 완료 되었을 때 상황을 설정해 줄 수 있습니다.
아래 코드에서는 로드가 시작되면 ProgressDialog를 실행하고 완료되면 로드가 완료된 url을 editText에 설정해주는 예제입니다.
webView.setWebViewClient(new WebViewClient(){
@Override
public void onPageStarted(WebView view, String url, Bitmap favicon) {
super.onPageStarted(view, url, favicon);
progressDialog.setMessage("Loading");
progressDialog.setProgressStyle(ProgressDialog.STYLE_SPINNER);
progressDialog.show();
}
@Override
public boolean shouldOverrideUrlLoading(WebView view, WebResourceRequest request) {
return super.shouldOverrideUrlLoading(view, request);
}
@Override
public void onPageFinished(WebView view, String url) {
super.onPageFinished(view, url);
et.setText(url);
}
});
웹에서 띄우는 팝업 창을 웹뷰를 통해 보여주게 하려면 .setWebChromeClient()를 설정해야 합니다.
.onProgressChanged() - 위의 코드에서 설정해준 ProgressDialog가 로딩이 완료되면 값이 100이상이 되는데 이 경우
ProgressDialog를 사라자기게 하기 위해 사용합니다.
.onJSAlert() - 웹에서 띄우는 팝업 창 같은 것을 웹뷰에서 보여주기 위해 사용합니다.
webView.setWebChromeClient(new WebChromeClient(){
@Override
public void onProgressChanged(WebView view, int newProgress) {
super.onProgressChanged(view, newProgress);
if(newProgress >= 100) progressDialog.dismiss();
}
@Override
public boolean onJsAlert(WebView view, String url, String message, JsResult result) {
return super.onJsAlert(view, url, message, result);
}
});
마지막으로 웹뷰에서 url을 로드할때 loadUrl을 사용합니다.
webView.loadUrl("http://www.naver.com");
'Android Studio' 카테고리의 다른 글
안드로이드 파일 입출력 예제 (0) | 2017.05.14 |
---|---|
안드로이드 웹 파일 저장 및 통신하기 (0) | 2017.05.09 |
안드로이드 CustomWidget 만들기 (0) | 2017.05.01 |
안드로이드 Custom GridView 만들기 (0) | 2017.05.01 |
안드로이드 Custom ListView 만들기 (0) | 2017.04.26 |