Notice
Recent Posts
Recent Comments
Link
투케이2K
136. (TWOK/LOGIC) [android] 안드로이드 웹뷰 스크롤 이벤트 발생 시 Top 최상단 위치 값 확인 및 웹 리로드 갱신 처리 로직 본문
투케이2K 로직정리
136. (TWOK/LOGIC) [android] 안드로이드 웹뷰 스크롤 이벤트 발생 시 Top 최상단 위치 값 확인 및 웹 리로드 갱신 처리 로직
투케이2K 2025. 3. 6. 20:09[로직 정리]
정리 로직 : Mobile
상태 : [android] 안드로이드 웹뷰 스크롤 이벤트 발생 시 Top 최상단 위치 값 확인 및 웹 리로드 갱신 처리 로직
[설 명]
// --------------------------------------------------------------------------------------
[사전) 설정 및 정보 확인 사항]
// --------------------------------------------------------------------------------------
- 안드로이드에서 웹뷰 로드를 수행하기 위한 퍼미션 권한 설정 및 네트워크 연결 상태 확인 필요
- 퍼미션 권한 설정 코드 :
<uses-permission android:name="android.permission.INTERNET"/>
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
<uses-permission android:name="android.permission.CHANGE_WIFI_STATE"/>
<uses-permission android:name="android.permission.CHANGE_NETWORK_STATE" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
// --------------------------------------------------------------------------------------
// --------------------------------------------------------------------------------------
[로직 설명]
// --------------------------------------------------------------------------------------
1. 안드로이드 애플리케이션 실행 및 웹뷰 로드 화면 진입
- 사전) 웹뷰 XML 생성 부분에는 SwipeRefreshLayout 리프래시 레이아웃 생성 필요
2. 웹뷰 로드 수행 전) 휴대폰 네트워크 상태 확인 및 인터넷 사용 가능 한 환경 여부 체크
3. [IF] 인터넷을 사용할 수 없는 상황 인 경우 :
- 휴대폰 모바일 네트워크 환경 확인이 필요합니다. 팝업창 표시
4. [ELSE] 인터넷을 사용할 수 있는 경우 :
- 웹뷰 호출에 필요한 url , header 지정 후 웹뷰 로드 수행 실시
- 웹뷰 스크롤 이벤트 감지를 위한 setOnScrollChangeListener 이벤트 리스너 등록 수행
- 웹뷰 새로 고침 이벤트 리스너 setOnScrollChangeListener 에서는 웹뷰 리프래시 레이아웃과 웹 스크롤 동작이 충돌 되지 않게 top 위치 체크 후 갱신 처리 로직 작성
: SwipeRefreshLayout 레이아웃과 웹 화면 스크롤이 충돌 되어 화면 스크롤이 되지 않고 웹 화면이 갱신 되는 이슈가 발생할 수 있으므로 top 위치 체크
: 예시 소스 코드
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 [최상단 인 경우]
S_Log.w("WEB_SCROLL_TOP", ">>>>>>>>>>>>>>>>> [setOnScrollChangeListener] :: [scrollY] :: " + String.valueOf(scrollY) + " / [scrollX] :: " + String.valueOf(scrollX) + " >>>>>>>>>>>>>>>>>");
refreshLayout.setEnabled(true); // [새로 고침 활성 처리]
}
else { // TODO [스크롤 화면이 내려간 경우]
refreshLayout.setEnabled(false); // [새로 고침 비활성 처리]
}
}
});
5. 웹뷰 로드 수행 완료 후 웹뷰 화면 스크를 이동 수행 및 최상단 위치에서 스크롤 수행 시 웹 페이지 새로 고침 동작 상태 확인
// --------------------------------------------------------------------------------------
// --------------------------------------------------------------------------------------
[참고 사이트]
// --------------------------------------------------------------------------------------
[안드로이드 SwipeRefreshLayout 새로 고침 레이아웃 사용 시 Webview 웹뷰 화면 스크롤 동작 충돌 이슈]
https://blog.naver.com/kkh0977/223744907964?trackingCode=blog_bloghome_searchlist
[코틀린 : 안드로이드 Webview 웹뷰 setOnScrollChangeListener 사용해 웹 화면 스크롤 이벤트 감지 수행]
https://blog.naver.com/kkh0977/223744909155?trackingCode=blog_bloghome_searchlist
[자바 : A_Main - 웹뷰 로드 화면 관련 클래스 정리]
https://blog.naver.com/kkh0977/222680670897?trackingCode=blog_bloghome_searchlist
// --------------------------------------------------------------------------------------
반응형
'투케이2K 로직정리' 카테고리의 다른 글
Comments