티스토리 뷰

헉....충격이다...
앞으로 HTML5가 대세가 될것을 보면서 번거로운 안드로이드 어플 개발에 대한 흥미가 떨어졌었다.
그랬더니 기본적인 것도 다~ 잊어버렸네...ㅋㅋ

웹브라우저 VS 웹뷰

안드로이드에서 웹 페이지를 보여주는 방법은 2가지이다.

  • 웹브라우저
  • 웹뷰(WebView)

간단히 웹 브라우저는 간단히 URL만 사용해서 엡 페이지를 보여줄 때 사용하고,
웹뷰는 하이브리드 방식으로 내부동작에는 안드로이드 내장 컴포넌트를 사용할 때 이용된다.

Webview 사용하기

  1. AndroidManifest.xml 에 인터넷 사용 설정하기
  2. 레이아웃 XML에 WebView 선언하기
  3. HTML 작성 및 저장
  4. Activity에서 mWebView 사용하기

1. AndroidManifest.xml 에 인터넷 사용 설정하기

<manifest xmlns:android="http://schemas.android.com/apk/res/android"
      package="moblie.dart"
      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="HomeActivity"
                  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>

2. 레이아웃 XML에 WebView 선언하기  

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="vertical"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    >
    
    
    <WebView 
        android:id="@+id/webview"
        android:layout_width="fill_parent"
        android:layout_height="fill_parent"
    />
</LinearLayout>

3. HTML 작성 및 저장

HTML 작성시 저장 위치를 알아야 한다.  바로 여기 
{MyProject}/assets/ 안에 html 폴더를 만들고 저장한다. 
호출할 때는 "file:///android_asset/html/test.html"라고 적는다.  

4. Activity에서 WebView 사용하기

public class HomeActivity extends Activity {
    /** Called when the activity is first created. */
	final static String TAG = "HomeActivity" ;
	final Activity activity = this;	
	
	HomeActivity home ;
	WebView  mWebView ;	
	
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
        
        mWebView = (WebView) findViewById(R.id.webview); 
        
        if(mWebView != null){
	        mWebView.getSettings().setJavaScriptEnabled(true);  // 웹뷰에서 자바스크립트실행가능
	       // mWebView.loadUrl("http://www.google.com");  // 구글홈페이지 지정
	        mWebView.loadUrl("file:///android_asset/html/home.html");
	
	        mWebView.setWebViewClient(new MyWebClient());  // WebViewClient 지정                
        }
    }
    
    
    private class MyWebClient extends WebViewClient { 
        @Override 
		public boolean shouldOverrideUrlLoading(WebView view , String url){
			view.loadUrl(url);
			return true;
		}

		public void onReceivedError(WebView view, int errorCode, String description, String failingUrl) {
			Toast.makeText(activity, "Oh no! " + description, Toast.LENGTH_SHORT).show();
		}	
    }
}

댓글