웹뷰란? 

어플리케이션 화면상에 내가 만든 웹페이지 혹은 내가 띄우고싶은 웹페이지를 어플리케이션 안에서 보여주는 프레임을 말합니다.

 

보통은 이미 제작된 본인의 웹사이트나 카페, 페이스북을 웹뷰를 통해 띄우면 별도의 앱작업이 필요없이 어플리케이션을 완성시킬수 있습니다.

 

1. 안드로이드 앱을 실행하여, 새로운 프로젝트를 생성합니다.

 

Image 1.jpg

 

 

2. 저는 최근에 많이 사용하는 앱 하단에 네비게이션이 있는 템플릿을 선택했습니다.

 

Image 2.jpg

 

 

3. 기본 앱 정보를 입력합니다. 사용 언어는 자바를 선택했습니다.

 

Image 3.jpg

 

4. AndroidManifest.xml 편집창에서 상단에 아래 퍼미션 허용 구문을 추가해 줍니다.

 

<uses-permission android:name="android.permission.INTERNET"/>

 

Image 4.jpg

 

 

프로젝트/app/src/main/AndroidManifest.xml 

 

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="com.phteahang.m">

    <uses-permission android:name="android.permission.INTERNET"/>

    <application
        android:allowBackup="true"
        android:icon="@mipmap/ic_launcher"
        android:label="@string/app_name"
        android:roundIcon="@mipmap/ic_launcher_round"
        android:supportsRtl="true"
        android:theme="@style/AppTheme">
        <activity
            android:name=".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>

 


5. fregment_home.xml 편집창에서 아래 그림처럼 WebView 태그를 수정/등록해 줍니다.

<WebView

    android:id="@+id/webView"

    android:layout_width="match_parent"

    android:layout_height="match_parent"

    android:layout_alignParentTop="true"

    android:layout_alignParentStart="true"

    android:layout_alignParentLeft="true">

</WebView>

 

 Image 5.jpg

 

6. HomeFragment.java 편집창에서 아래 구문을 추가합니다.

선언(import)되지 않은 클래스는 Alt+Enter 키를 눌러서 등록해 줍니다.

 

public class HomeFragment extends Fragment {

    private WebView mWebView; // 웹뷰 선언
    private WebSettings mWebSettings; //웹뷰세팅

    public View onCreateView(@NonNull LayoutInflater inflater,
                             ViewGroup container, Bundle savedInstanceState) {
        View homeView = inflater.inflate(R.layout.fragment_home, container, false);

        String url = "http://phteahang.com/";
        mWebView = homeView.findViewById(R.id.webView);
        mWebView.setWebViewClient(new WebViewClient());
        mWebSettings = mWebView.getSettings();
        mWebSettings.setJavaScriptEnabled(true);
        mWebSettings.setPluginState(WebSettings.PluginState.ON);
        mWebSettings.setSupportMultipleWindows(false);
        mWebSettings.setJavaScriptCanOpenWindowsAutomatically(false);
        mWebSettings.setLoadWithOverviewMode(true);
        mWebSettings.setUseWideViewPort(true);
        mWebSettings.setSupportZoom(false);
        mWebSettings.setBuiltInZoomControls(false);
        mWebSettings.setLayoutAlgorithm(WebSettings.LayoutAlgorithm.NORMAL);
        mWebSettings.setCacheMode(WebSettings.LOAD_NO_CACHE);
        mWebSettings.setDomStorageEnabled(true);
        mWebSettings.setGeolocationEnabled(true);
        mWebSettings.setSavePassword(true);
        mWebSettings.setSaveFormData(true);
        mWebView.setFocusableInTouchMode(false);
        mWebView.setFocusable(false);
        mWebView.setWebChromeClient(new WebChromeClient() {
        });
        mWebView.loadUrl(url);

        return homeView;
    }
}

 

Image 6.jpg

 

 

7. 앱매뉴 상단에 플레이버튼을 클릭해서 가상디바이스에서 결과를 확인합니다.

Image 7.jpg

 

Image 8.jpg