Android

945. (Android/Java) [간단 소스] 안드로이드 Webview 웹뷰 setOnScrollChangeListener 사용해 웹 화면 스크롤 이벤트 감지 수행

투케이2K 2025. 2. 2. 09:24

[개발 환경 설정]

개발 툴 : AndroidStudio

개발 언어 : Java / Kotlin

 

[소스 코드]

 

// --------------------------------------------------------------------------------------
[개발 및 테스트 환경]
// --------------------------------------------------------------------------------------

- 언어 : Java / Kotlin

- 개발 툴 : AndroidStudio

- 기술 구분 : Webview / Scroll / setOnScrollChangeListener

// --------------------------------------------------------------------------------------






// --------------------------------------------------------------------------------------
[사전) 필요 설정]
// --------------------------------------------------------------------------------------

[AndroidManifest.xml 파일 필요 퍼미션]

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

// --------------------------------------------------------------------------------------





// --------------------------------------------------------------------------------------
[소스 코드]
// --------------------------------------------------------------------------------------

// [WebView 객체 생성 수행]
WebView main_webview = (WebView) findViewById(R.id.main_webview);  


// [Web 화면 내 스크롤 이벤트 감지를 위한 이벤트 리스너 등록]
main_webview.setOnScrollChangeListener(new View.OnScrollChangeListener(){ // TODO [웹뷰 스크롤 이벤트 발생 확인]
    @Override
    public void onScrollChange(View v, int scrollX, int scrollY, int oldScrollX, int oldScrollY) {
        S_Log.w("WEB_SCROLL", ">>>>>>>>>>>>>>>>> [scrollY] :: " + String.valueOf(scrollY) + " / [scrollX] :: " + String.valueOf(scrollX) + " >>>>>>>>>>>>>>>>>");

        if (scrollY == 0){ // TODO [최상단 인 경우]
            refreshLayout.setEnabled(true); // [새로 고침 활성 처리]
        }
        else { // TODO [스크롤 화면이 내려간 경우]
            refreshLayout.setEnabled(false); // [새로 고침 비활성 처리]
        }
    }
});

// --------------------------------------------------------------------------------------





// --------------------------------------------------------------------------------------
[결과 출력]
// --------------------------------------------------------------------------------------

W/WEB_SCROLL: >>>>>>>>>>>>>>>>> [scrollY] :: 1 / [scrollX] :: 0 >>>>>>>>>>>>>>>>>
W/WEB_SCROLL: >>>>>>>>>>>>>>>>> [scrollY] :: 23 / [scrollX] :: 0 >>>>>>>>>>>>>>>>>
W/WEB_SCROLL: >>>>>>>>>>>>>>>>> [scrollY] :: 81 / [scrollX] :: 0 >>>>>>>>>>>>>>>>>
W/WEB_SCROLL: >>>>>>>>>>>>>>>>> [scrollY] :: 111 / [scrollX] :: 0 >>>>>>>>>>>>>>>>>
W/WEB_SCROLL: >>>>>>>>>>>>>>>>> [scrollY] :: 136 / [scrollX] :: 0 >>>>>>>>>>>>>>>>>

......

// --------------------------------------------------------------------------------------

 

반응형