pizzaplanet

안드로이드 웹뷰 띄우기 본문

Android

안드로이드 웹뷰 띄우기

scio 2018. 4. 26. 23:02

Android Webview

안드로이드에서 웹뷰를 띄워보자.




우선 아래와 같이 activity_main.xml 에서 WebView를 추가해주자. Design 모드에서 WebView를 드래그 한 후 우측 창에서 속성들을 조정 해도 된다.


코드가 편하다면 아래와 같이 하면 된다.

<activity_main.xml>

1
2
3
4
5
6
7
8
9
<android.support.constraint.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
    <!--웹뷰추가 -->
    <WebView
        android:id="@+id/activity_main_webview"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:padding="0dp"
        tools:layout_editor_absoluteX="8dp"
        tools:layout_editor_absoluteY="8dp"  />
cs



<AndroidManifest.xml>

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="com.example.ghseh.myapplication">
    <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"
            android:configChanges="orientation|keyboardHidden|screenSize"><!---가로세로 변환시 리로딩 방지-->
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />
 
                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>
    </application>
    <uses-permission android:name="android.permission.INTERNET" /><!---인터넷 권한 부여-->
</manifest>
cs


13라인: 가로세로 모드 전환하면 화면을 다시 리로드 해버린다. 이를 방지하자.

21라인: 권한부여 하지 않으면 net::ERR_CACHE_MISS 에러가 뜨니 추가해주자


<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
34
35
public class MainActivity extends AppCompatActivity {
    private  WebView mwv;//Mobile Web View
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
 
        mwv=(WebView)findViewById(R.id.activity_main_webview);
 
        WebSettings mws=mwv.getSettings();//Mobile Web Setting
        mws.setJavaScriptEnabled(true);//자바스크립트 허용
        mws.setLoadWithOverviewMode(true);//컨텐츠가 웹뷰보다 클 경우 스크린 크기에 맞게 조정
 
        mwv.setWebViewClient(new WebViewClient(){
            @Override
            public boolean shouldOverrideUrlLoading(WebView view, String url) {
                view.loadUrl(url);
                return true;
            }
        });
        mwv.loadUrl("http://pizzaplanet.tistory.com/");
    }
 
//   추가전에 뒤로가기 이벤트 호출시 홈으로 돌아갔으나, 이젠 일반적인 뒤로가기 기능 활성화
    @Override
    public boolean onKeyDown(int keyCode, KeyEvent event) {
        if (keyCode == KeyEvent.KEYCODE_BACK) {
            if (mwv.canGoBack()) {
                mwv.goBack();
                return false;
            }
        }
        return super.onKeyDown(keyCode, event);
    }
}
cs


11라인: 웹뷰 안에서 자바스크립트 허용

12라인: 컨텐츠가 웹뷰보다 클 때에 스크린 크기에 맞춰서 조정해준다.

26라인: 뒤로가기 이벤트 호출시 홈으로 돌아가버린다. 예를들어 웹뷰로 네이버를 띄운 후 기사들을 보다가 뒤로가면 전 페이지로 가는데 홈으로 돌아가버리는 것. 우리가 원하는 전페이지로 돌아가는 것이므로 이 기능을 부여해준 것이다.


참고

웹뷰(webview)를 만들어 보자

안드로이드 웹뷰(WebView)를 이용한 예제 프로그램 (1)

안드로이드 웹뷰 오류 net::ERR_CACHE_MISS

Comments