본문 바로가기
옛날

안드로이드 웹뷰 [Android]

by 차가운게 조아 2015. 12. 11.

WebView API 레퍼런스 : http://developer.android.com/reference/android/webkit/WebView.html


웹브라우징

 

WebView는 웹페이지를 화면에 디스플레이하는 뷰

WebView위젯은 WebKit이라는 엔진을 사용하여서 HTML문서를 해석하여서 화면에 그려준다.

"앞으로", "뒤로" 와 같은 네비게이트 기능 , 줌인, 줌아웃, 텍스트 탐색등의 많은 기능을 지원.

 

 

WebView의 특징

 

1) 직접 URL을 지정하여 화면에 띄우는 방법

2) HTML소스를 문자열로 작성하여 화면에 출력하는 방식.

 

  

 

 [프로젝트명 : WebViewBasicSample ] 웹뷰 기본 예제

activity_main.xml

1
2
3
4
5
6
7
<WebView xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/webview"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:clickable="true">

    
</WebView>

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

  1. <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
  2.   android:layout_width="match_parent"
  3.   android:layout_height="match_parent"
  4.   tools:context=".MainActivity" >
  5.  
  6.     <WebView
  7.       android:id="@+id/web1"
  8.       android:layout_width="match_parent"
  9.       android:layout_height="match_parent"  
  10.       />
  11.  
  12. </LinearLayout>

MainActivity.java 

  1. package com.example.web1;
  2.  
  3. import android.os.Bundle;
  4. import android.app.Activity;
  5. import android.view.KeyEvent;
  6. import android.view.Menu;
  7. import android.webkit.WebView;
  8. import android.webkit.WebViewClient;
  9.  
  10. public class MainActivity extends Activity {
  11.    
  12.    
  13.     public class MyWebClient extends WebViewClient {
  14.         @Override
  15.         public boolean shouldOverrideUrlLoading(WebView view, String url) {
  16.                        
  17.             view.loadUrl(url);        
  18.             return true;
  19.         }
  20.     }
  21.     private WebView webView;
  22.     @Override
  23.     protected void onCreate(Bundle savedInstanceState) {
  24.         super.onCreate(savedInstanceState);
  25.         setContentView(R.layout.activity_main);
  26.        
  27.         webView = (WebView) findViewById(R.id.web1);
  28.         webView.getSettings().setJavaScriptEnabled(true)//JavaScript사용설정
  29.         webView.loadUrl("http://javaking75.blog.me")//웹뷰에 지정한 URL웹문서 출력
  30.         webView.setWebViewClient(new MyWebClient())//주소표시줄 보이지 않게..
  31.        
  32.     }//onCreate
  33.    
  34.    
  35.     @Override
  36.     public boolean onKeyDown(int keyCode, KeyEvent event) {
  37.         if((keyCode == KeyEvent.KEYCODE_BACK)&&webView.canGoBack()) { //백을 눌렀고 뒤로 갈수있으면 뒤로.
  38.             webView.goBack();
  39.             return true;
  40.         }
  41.         return super.onKeyDown(keyCode, event);
  42.     }//onKeyDown
  43. }//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); // 액티비티 화면에 타이틀을 없애줌.

 

 

[결과]

 

 


 

 



'옛날' 카테고리의 다른 글

버튼 리스너 [Android]  (0) 2015.12.11
버튼 링크 [Android]  (0) 2015.12.11
버튼 이벤트 처리 [Android]  (0) 2015.12.11
Layout xml 속성 [Android]  (0) 2015.12.10
소프트웨어 버전 정보 이해하기  (0) 2015.12.10