티스토리 뷰

Android/정리

WebView사용하기 (웹뷰)

란텔 2016. 6. 14. 20:26

웹뷰는 안드로이드 애플리케이션 안에서 웹브라우저를 띄울 수 있는 방법을 제공한다.


xml레이아웃에서 <WebView>엘리먼트로 정의한다.



웹뷰를 정의하여 사용할 때는 androidManifest.xml파일에 인터넷 접속 권한을 등록해야 한다.

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



웹뷰의 설정정보는 액티비티에서 getSettings()메서드를 이용해서 여러가지 설정을 할 수 있다. 그리고 이 getSettings()로 가져온 WebSettings 타입에는 setJavascriptEnabled(boolean b)라는 메서드가 존재하는데 자바스크립트를 허용 할 것인가를 지정하는 것으로 대부분의 웹사이트가 자바스크립트를 사용하니 이것은 항상 true로 설정해야 한다.




다음은 간단한 웹뷰 예제 코드이다. 에딧텍스트에서 주소를 입력하고 버튼을 터치하면 웹뷰영역에서 웹브라우저가 나타난다.




MainActivity.java

public class MainActivity extends AppCompatActivity {

    private WebView mWebView;
    EditText editText;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        //레이아웃에서 에딧텍스트 정보를 가져온다.
        editText = (EditText) findViewById(R.id.editText);
        //버튼 터치시 에딧 텍스트에 지정한 url로 웹뷰를 띄우도록 설정
        Button b = (Button) findViewById(R.id.button);
        b.setOnTouchListener(new View.OnTouchListener() {
            @Override
            public boolean onTouch(View view, MotionEvent motionEvent) {
                if (editText == null || editText.getText().equals("")) {
                    return false;
                }

                if (motionEvent.getAction() == MotionEvent.ACTION_UP) {
                    goingWeb(editText.getText().toString());
                }
                return true;
            }
        });


        mWebView = (WebView) findViewById(R.id.webView); //레이아웃에서 웹뷰를 가져온다
        mWebView.setWebViewClient(new WebClient()); //액티비티 내부에서 웹브라우저가 띄워지도록 설정
        WebSettings webSettings = mWebView.getSettings(); //getSettings를 사용하면 웹에대헤 다양한 설정을 할 수 있는 WebSettings타입을 가져올 수 있다.
        webSettings.setJavaScriptEnabled(true); //자바스크립트가 사용가능 하도록 설정

    }


    class WebClient extends WebViewClient {
        public boolean shouldOverrideUrlLoading(WebView view, String url) {
            view.loadUrl(url);
            return true;
        }
    }

    public void goingWeb(String src) {
        mWebView.loadUrl("http://" + src); //loadUrl메서드를 사용하면 웹브라우저를 띄운다.
    }

    //뒤로가기 앞으로 가기 기능
    public void forwardAndBack(View v){
        if(v.getId() == R.id.goForward){
            mWebView.goForward();
        }else if(v.getId() == R.id.goBack){
            mWebView.goBack();
        }
    }


}



activity_main.xml

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical"
    tools:context="com.example.choonie.androidtestapplication.MainActivity">

    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:orientation="horizontal">

        <EditText
            android:id="@+id/editText"
            android:layout_width="292dp"
            android:layout_height="wrap_content"
            android:inputType="textUri"
            android:textSize="20dp" />

        <Button
            android:id="@+id/button"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="열기"
            android:textSize="20dp" />

    </LinearLayout>

    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:orientation="horizontal">

        <Button
            android:id="@+id/goBack"
            android:layout_weight="1"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="뒤로"
            android:textSize="15dp"
            android:onClick="forwardAndBack"/>

        <Button
            android:id="@+id/goForward"
            android:layout_weight="1"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="앞으로"
            android:textSize="15dp"
            android:onClick="forwardAndBack" />

    </LinearLayout>

    <WebView
        android:id="@+id/webView"
        android:layout_width="match_parent"
        android:layout_height="match_parent" />

</LinearLayout>


'Android > 정리' 카테고리의 다른 글

탭 (Tab)  (0) 2016.08.07
SeekBar  (0) 2016.08.04
Androdmanifest.xml의 configchanges속성  (0) 2016.06.10
android selector xml 사용 (뷰를 터치시 색상 효과 주기)  (0) 2016.06.10
이벤트 처리  (0) 2016.06.08
Comments
최근에 올라온 글
최근에 달린 댓글
TAG
more
Total
Today
Yesterday