Gooday Note Scrap Source Android login
 
작성일 : 12-02-07 14:17
웹뷰 - webview
 글쓴이 : 기리
조회 : 3,598   추천 : 0   비추천 : 0  
   TPMS.apk (14.4K) [1] DATE : 2012-02-07 15:40:34
   http://moozi.tistory.com/78 [1459]
   http://holls2000.tistory.com/tag/%EC%9B%B9%EB%B7%B0 [1210]

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 가 로딩된 모습 ]



===================================================================================