반응형

유튜브 채널 hongdroid홍드로이드님의 강의를 보고 학습했습니다.

 

hongdroid홍드로이드

안녕하세요 구디에서 신입 앱 개발자로서의 삶을 살아가고 있는 홍드로이드 라고 합니다. 이 채널에서는 IT 계열 앱 개발자는 도대체 어떻게 하루를 보낼까 하는 분들을 위해서 만들어졌습니다.

www.youtube.com

메인액티비티.xml

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    tools:context=".MainActivity">
 
 
    <WebView
        android:id="@+id/webView"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
 
        ></WebView>
 
</LinearLayout>
cs

메인액티비티.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
36
37
38
39
40
41
42
43
44
package com.example.webviewexample;
 
import androidx.appcompat.app.AppCompatActivity;
 
import android.os.Bundle;
import android.view.KeyEvent;
import android.webkit.WebChromeClient;
import android.webkit.WebView;
import android.webkit.WebViewClient;
 
public class MainActivity extends AppCompatActivity {
 
    private WebView webView;
    private String url ="https://seminzzang.tistory.com/";
 
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
 
        webView = (WebView)findViewById(R.id.webView);
        webView.getSettings().setJavaScriptEnabled(true);
        webView.loadUrl(url);
        webView.setWebChromeClient(new WebChromeClient());
        webView.setWebViewClient(new WebViewClientClass());
    }
 
    @Override
    public boolean onKeyDown(int keyCode, KeyEvent event) {
        if( (keyCode == KeyEvent.KEYCODE_BACK) && webView.canGoBack() ){
            webView.goBack();
            return true;
        }
        return super.onKeyDown(keyCode, event);
    }
 
    private class WebViewClientClass extends WebViewClient {
        @Override
        public boolean shouldOverrideUrlLoading(WebView view, String url) {
            view.loadUrl(url);
            return true;
        }
    }
}
cs

안드로이드매니페스트.xml

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="com.example.webviewexample">
 
    <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/Theme.WebViewExample">
        <activity android:name=".MainActivity">
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />
 
                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>
    </application>
 
</manifest>
cs

오늘은 WebView를 학습했다.

WebView는 어플리케이션 상에 웹 화면을 띄워주는 역할을 하는데, 

생각했던것 보다 설정할 부분이 많았다.

강의에 대해 이해가 안되는 부분이 몇가지 있어서, 여기저기 물어보고 구글링을 했으나 별로 도움이 되진 않았다....

구글에서 함수의 원형을 보고 몇가지를 이해할 수 있었다.

1. WebView

  1) webView.getSettings().setJavaScriptEnabled(true) : 웹뷰에서 자바스크립트를 허용하는 기능.

  -> webView.getSettings()를 새로운 함수로 선언해서 사용하는 경우도 많았다.

  2) webView.loadUrl( url ) : URL을 불러오는 기능.

  3) webView.setWebChromeClient( new WebChormeClient() ) : Chrome 사용 세팅.

  4) webView.setWebViewClient( new WebViewClientClass() ) : 내부 웹뷰 클라이언트 사용

   ( 지정을 안해주면 별도의 브라우저가 생성됨 )

  여기서 매개변수인 new WebViewClientClass()는 사용자가 직접 생성한 클래스이다. create inner class로 만들었다.

  5) public boolean onKeyDown( int keyCode, KeyEvent event ) : 특정 키를 입력했을 때 어떤 동작을 하는지 지정

   Ctrl + O 를 이용해서 생성했다.

   KEYCODE_BACK이 입력되고, 웹뷰가 뒤로 갈 수 있을 때, 뒤로 가도록 설정했다.

  6) shouldOverrideUrlLoading( WebView view, String url ) : 현재 페이지의 URL을 읽어오는 메소드.

   새 창을 읽거나 특정 페이지에서 특수한 기능을 넣을 수 있다. 자주 사용된다고 한다.

   이 부분이 이해가 잘 안갔는데, 자세히 설명된 글을 찾기 힘들었다.

   구글링을 하던중 한 블로그에서 설명하기로는 boolean으로 리턴값을 넘겨주는 이 함수는

   웹뷰를 포함하고 있는 앱이 처리 하는지,

   더 자세히 말해 웹뷰를 보여주는 Activity를 실행하는지에 대한 결과값 이라 한다.

2. 인터넷 권한 설정

  어플리케이션에서 인터넷을 사용하려면 권한을 설정해주어야 되는데, app/manifests/AndoidManifest.xml 에서

  <uses-permission android:name="android.permission.INTERNET"/를 추가해 주면 된다.

출력화면 - 웹뷰

 

반응형

+ Recent posts