WebView API 레퍼런스 : http://developer.android.com/reference/android/webkit/WebView.html
웹브라우징
WebView는 웹페이지를 화면에 디스플레이하는 뷰
WebView위젯은 WebKit이라는 엔진을 사용하여서 HTML문서를 해석하여서 화면에 그려준다.
"앞으로", "뒤로" 와 같은 네비게이트 기능 , 줌인, 줌아웃, 텍스트 탐색등의 많은 기능을 지원.
WebView의 특징
1) 직접 URL을 지정하여 화면에 띄우는 방법
2) HTML소스를 문자열로 작성하여 화면에 출력하는 방식.
[프로젝트명 : WebViewBasicSample ] 웹뷰 기본 예제 |
activity_main.xml | | MainActivity.java | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33
| package com.example.webviewbasicsample;
import android.app.Activity; import android.os.Bundle; import android.view.Window; import android.webkit.WebView;
public class MainActivity extends Activity {
WebView webView;
@Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState);
// 코드상에서 액티비티 화면에 타이틀을 없애줌. 매니페스트에서도 가능. requestWindowFeature(Window.FEATURE_NO_TITLE);
setContentView(R.layout.activity_main);
// xml로부터 webview객체를 가져옴 webView = (WebView) findViewById(R.id.webview);
//[1] url을 웹뷰에서 로드 webView.loadUrl("http://m.blog.naver.com/javaking75"); //[2] html 코드를 웹뷰에서 로드 /*String data = "<html><body><center><h2>the Time </h2>"+ new Date().toGMTString() +"<br></center></body></html>"; webView.loadData(data, "text/html", "UTF-8");*/ }
} |
| AndroidManifest.xml - 인터넷을 이용하기 위한 퍼미션 추가 | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30
| <?xml version="1.0" encoding="utf-8"?> <manifest xmlns:android="http://schemas.android.com/apk/res/android" package="com.example.webviewbasicsample" android:versionCode="1" android:versionName="1.0" >
<uses-sdk android:minSdkVersion="8" android:targetSdkVersion="17" />
<!-- 인터넷을 이용하기 위한 퍼미션 지정 --> <uses-permission android:name="android.permission.INTERNET" />
<application android:allowBackup="true" android:icon="@drawable/ic_launcher" android:label="@string/app_name" android:theme="@style/AppTheme" > <activity android:name="com.example.webviewbasicsample.MainActivity" 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>
</manifest> |
|
|
[참고] 인터넷을 이용하기 위한 퍼미션 추가 [1] url을 웹뷰에서 로드 webView.loadUrl("http://m.blog.naver.com/javaking75"); [2] html 코드를 웹뷰에서 로드 String data = "<html><body><center><h2>the Time </h2>"+ new Date().toGMTString() +"<br></center></body></html>"; webView.loadData(data, "text/html", "UTF-8");
|
[프로젝트명 : Web1 ] 웹뷰 기본 예제2 |
activity_main.xml | android:layout_width="match_parent" android:layout_height="match_parent" tools:context=".MainActivity" > <WebView android:id="@+id/web1" android:layout_width="match_parent" android:layout_height="match_parent" /> </LinearLayout>
| MainActivity.java | package com.example.web1; import android.os.Bundle; import android.app.Activity; import android.view.KeyEvent; import android.view.Menu; import android.webkit.WebView; import android.webkit.WebViewClient; public class MainActivity extends Activity { public class MyWebClient extends WebViewClient { @Override public boolean shouldOverrideUrlLoading (WebView view, String url ) { view.loadUrl(url); return true; } } private WebView webView; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); webView = (WebView) findViewById(R.id.web1); webView.getSettings().setJavaScriptEnabled(true); //JavaScript사용설정 webView.setWebViewClient(new MyWebClient()); //주소표시줄 보이지 않게.. }//onCreate @Override public boolean onKeyDown (int keyCode, KeyEvent event ) { if((keyCode == KeyEvent. KEYCODE_BACK)&&webView. canGoBack()) { //백을 눌렀고 뒤로 갈수있으면 뒤로. webView.goBack(); return true; } return super.onKeyDown(keyCode, event); }//onKeyDown }//end
| AndroidManifest.xml 파일에 권한 추가 | - 인터넷접속 권한. <uses-permission android:name="android.permission.INTERNET"/>
|
|
MainActivity.java 문서의 29번 라인 : loadUrl()을 호출하여서 원하는 웹페이지를 로드. 참고로 , loadData()을 사용하면 HTML문자열로부터도 로드가 가능. webview.loadData(data, "text/html","UTF-8"); 30번 라인 : WebViewClient는 화면을 그리는데 영향을 주는 어떤 사건이 발생했을 경우에 호출. [참고] requestWindowFeature(Window.FEATURE_NO_TITLE); // 액티비티 화면에 타이틀을 없애줌. [결과]
|