본문 바로가기
Android/Dev

웹뷰 등에서 OnTouchListener 적용하기

by featherwing 2020. 1. 29.
728x90
반응형

일부 View를 사용할 때 ClickListener가 적용되지 않는 경우가 있습니다.

Webview 같은경우, 메소드에 setOnClickListener가 존재하지만,

이를 적용해도 아무 작업도 할 수 없습니다.

 

View와 터치로 상호작용 할 경우 일부 UI의 Visible을 조절한다던가 하는 작업이 필요할 때

Listener를 붙여주어야 가능한데 난감한 경우라고 할 수 있습니다.

 

하지만, 간단한 방법으로 구현할 수 있으니 걱정하지 않으셔도 됩니다.

 

OnTouchListener를 implements 해주는것으로 OnTouchListener를 사용할 수 있습니다.

 

public class SomeFragment extends Fragment implements View.OnTouchListener {

View mainView;
Webview mWebview;

@Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container,
                             Bundle savedInstanceState) {
                             
        mainView = inflater.inflate(R.layout.fragment, container, false);
        mWebview =  mainView.findViewById(webview);
        
        
        webView.setOnTouchListener(this);
        
        return mainView;
        }


@Override
    public boolean onTouch(View v, MotionEvent event) {
        switch (event.getAction()) {
            case MotionEvent.ACTION_UP: {
                something();

            }
        }
        return false;
    }
}

구현방법은 아래와 같습니다.

 

1.  View.OnTouchListener를 implements.

2.  onTouch 메소드를 오버라이딩.

@Override
    public boolean onTouch(View v, MotionEvent event) {
        return false;
    }

3. 오버라이딩된 onTouch내부에 하단과같이 ACTION_UP을 판단하는 부분을 구성.

   @Override
    public boolean onTouch(View v, MotionEvent event) {
        switch (event.getAction()) {
            case MotionEvent.ACTION_UP: {
                something();

            }
        }
        return false;
    }

* ACTION_UP 은 유저가 화면에 손가락을 터치한 뒤 손가락이 떨어진다면 항상 발생하게 됩니다.

 

4. webview등에 setOnTouchListener를 설정.

 

 

webview등의 위에 추가적인 view를 더해서 구현하는 등의 복잡한 방법을 쓰지 않더라도 간단하게 구현할 수 있습니다.

728x90
반응형

댓글