WebView는 웹페이지를 보여주는, 웹브라우저와 비슷한 역할을 하는 뷰입니다.
이번 강좌 역시 안드로이드 개발자 사이트의 내용을 토대로 살펴보겠습니다.
1. 다음과 같이 프로젝트를 생성합니다.
2. AndroidManifest.xml 파일을 다음과 같이 편집합니다.
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="my.HelloMyWeb"
android:versionCode="1"
android:versionName="1.0">
<uses-permission android:name="android.permission.INTERNET" />
<application android:icon="@drawable/icon" android:label="@string/app_name">
<activity android:name=".HelloMyWeb"
android:label="@string/app_name">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
</application>
<uses-sdk android:minSdkVersion="6" />
</manifest>
코드에서 굵은 글씨 부분이 추가되었는데, 인터넷접속을 허가하는 권한을 부여한 것입니다.
3. res -> layout -> main.xml 을 다음과 같이 편집합니다.
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:orientation="vertical">
<WebView
android:id="@+id/webview"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
/>
</LinearLayout>
코드에서 굵은 글씨 부분이 WebView 가 정의된 곳입니다.
4. src -> my.HelloMyWeb -> HelloMyWeb.java 파일을 다음과 같이 편집합니다.
package my.HelloMyWeb;
import android.app.Activity;
import android.os.Bundle;
import android.view.KeyEvent;
import android.webkit.WebView;
import android.webkit.WebViewClient;
public class HelloMyWeb extends Activity {
WebView mWebView;
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
mWebView = (WebView) findViewById(R.id.webview);
mWebView.getSettings().setJavascriptEnabled(true); // 웹뷰에서 자바스크립트실행가능
mWebView.loadUrl("http://www.google.com"); // 구글홈페이지 지정
mWebView.setWebViewClient(new HelloWebViewClient()); // WebViewClient 지정
}
@Override
public boolean onKeyDown(int keyCode, KeyEvent event) {
if ((keyCode == KeyEvent.KEYCODE_BACK) && mWebView.canGoBack()) {
mWebView.goBack();
return true;
}
return super.onKeyDown(keyCode, event);
}
private class HelloWebViewClient extends WebViewClient {
@Override
public boolean shouldOverrideUrlLoading(WebView view, String url) {
view.loadUrl(url);
return true;
}
}
}
코드에서
if ((keyCode == KeyEvent.KEYCODE_BACK) && mWebView.canGoBack()) {
mWebView.goBack();
return true;
}
return super.onKeyDown(keyCode, event);
이부분은 뒤로가기 키를 눌렀을 때, 이전 페이지가 존재하면 전페이지로 돌아가게 해줍니다.
그리고,
private class HelloWebViewClient extends WebViewClient 에서
HelloWebViewClient 클래스는 WebViewClient 클래스를 상속받아서 만들었는데, WebViewClient 는 WebView 에서 로딩한 웹페이지의 링크를 클릭했을 때, 해당 URL을 로딩하는 데 필요합니다.
5. Ctrl + F11 로 실행합니다.
실행되어 구글홈페이지가 로딩되기까지 시간이 좀 걸립니다.
[ WebView 실행결과 - 구글홈페이지가 로딩된 모습 ]
저의 블로그 moozi.tistory.com 를 검색해 보았습니다.
[ WebView 실행결과 - moozi.tistory.com 을 검색하는 모습 ]
moozi.tistory.com 가 로딩되었습니다.
[ WebView 실행결과 - moozi.tistory.com 가 로딩된 모습 ]
===================================================================================