본문 바로가기

무한코딩/안드로이드 어플리케이션

[날지 무한코딩] WebView 만들기, WebView에 터치이벤트 주기

웹앱과 하이브리드 앱을 사용할 개발자라면 무조건 알아야하는 위젯이 WebView라고 생각이 듭니다.


오늘은 아주 간단하게  WebView를 만들어 볼까 합니다. 


또 webView를 터치할때 생기는 이벤트에 대해서도 설명을 해 드릴까 합니다.



우선 프로젝트를 생성 하겠습니다.



프로젝트를 생성하셨으면 MainActivity가 아닌 Manifest로 들어가 보겠습니다.


manifest는 화면 좌측 상단에 보시면 있습니다.


이 Manifest는 화면관리, 권한관리와 같은 어플의 전반적인 권한을 관리하는 곳입니다. 


앞으로도 자주 그리고 중요하게 쓰일 곳이니 꼭 기억하세요.



오늘은 웹뷰를 사용하기 때문에 인터넷 권한을 manifest에 줘야 합니다. 


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



<application 이 시작하기 이전에 이렇게 권한을 주면 됩니다. 


INTERNET뿐만아니라 다양한 권한이 존재하니까 한번 둘러보시는것도 괜찮을것 같네요!



자, 그럼 이제 화면을 그려보겠습니다.


제 화면은 일단 단순합니다.  WebView만 들어있거든요.


id만 지정해 주시고 따라오시면 될거 같습니다. (무슨말인지 모르시겠다는 분들은 이전 글을 보고 오세요!)


자 그리고 java 소스로 들어가 보겠습니다. 


우선 webView에 id를 매칭시켜줍니다. 


그리고 loadUrl을 사용하여 원하는 페이지 주소로 이동을 시킵니다. 


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 {
 
    WebView webView;
 
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
 
        webView = (WebView)findViewById(R.id.webView01);
 
        WebSettings webSettings = webView.getSettings(); // websetiing은 캐시, 자바스크립트 등의 기능 설정
        webSettings.setAppCacheEnabled(false);
 
        webView.setWebViewClient(new WebViewClient() { //새 창이 뜨는것을 방지
            @Override
            public boolean shouldOverrideUrlLoading(WebView view, String url) {
                view.loadUrl(url);
                return true;
            }
        });
 
        webView.setOnTouchListener(new View.OnTouchListener() { //터치이벤트 구현부
            @Override
            public boolean onTouch(View view, MotionEvent motionEvent) {
 
                Toast.makeText(getApplicationContext(), "click되었습니다.", Toast.LENGTH_LONG).show();
                return false;
            }
        });
 
        webView.loadUrl("https://redmuffler.tistory.com/"); //원하는 사이트의 주소
    }
}
 
cs


23~30번 줄을 보시면 setOnTouchListner 안에 onTouch라는 메소드가 있습니다.


저곳이 바로 WebView의 터치이벤트를 주는 부분입니다. 


결과화면입니다.




현재 저는 Toast메세지창을 띄우는데 그쳤지만 추후에 사용하시면서 자바스크립트와의 데이터교환 등을 사용하던지 앱딴에서의 여타 다른 어떠한 기능들을 바로 저곳을 통해 구현을 하실 수 있을 겁니다.


간단한 예제 였지만 궁금한 사항 있으시면 언제든 올려주시면 답변해 드리겠습니다.