투케이2K

82. (TWOK/LOGIC) [android] 안드로이드 웹뷰 (webview) 로딩 수행 간 네이티브 앱 로딩 프로그레스 동작 로직 - loading progress 본문

투케이2K 로직정리

82. (TWOK/LOGIC) [android] 안드로이드 웹뷰 (webview) 로딩 수행 간 네이티브 앱 로딩 프로그레스 동작 로직 - loading progress

투케이2K 2024. 10. 14. 20:06

[로직 정리]

정리 로직 : Android / 안드로이드

상태 : [android] 안드로이드 웹뷰 (webview) 로딩 수행 간 네이티브 앱 로딩 프로그레스 동작 로직 - loading progress

 

[설 명]

 


// --------------------------------------------------------------------------------------
[사전) 설정 및 정보 확인 사항]
// --------------------------------------------------------------------------------------

- 안드로이드 특정 URL 을 로드 하기 위한 웹뷰 클래스 생성 필요

- 네이티브 로딩 프로그레스 동작 클래스 생성 필요

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






// --------------------------------------------------------------------------------------
[로직 설명]
// --------------------------------------------------------------------------------------

1. 안드로이드 웹뷰에서 로드 시 특정 이벤트 감지를 위한 WebViewClient 상속 클래스 지정 실시

  >> main_webview.setWebViewClient(new MainWeb());

  >> class MainWeb extends WebViewClient : 페이지 로딩 시작, 종료 이벤트 핸들러 지정


2. 웹뷰 특정 URL 로드 수행 실시 

  >> main_webview.loadUrl(url);

  >> 필요에 따라 : 웹뷰 로드 수행 하위 부분에 웹뷰 View Gone 숨김 처리 수행 가능


3. 웹뷰 로드 수행 시작 onPageStarted 부분에서 네이티브 로딩 프로그레스 동작 수행 실시

        @Override
        public void onPageStarted(WebView view, String url, Bitmap favicon) {
            super.onPageStarted(view, url, favicon);
            S_Log._fileSave_(null, true, ACTIVITY_NAME + " : onPageStarted : 웹 로딩 시작", new String[]{"URL :: " + String.valueOf(url)});

            // --------------------------------------
            // [SEARCH FAST] : [웹뷰 로드 수행 실시]
            // --------------------------------------
            // [로딩 프로그레스 동작]
            // --------------------------------------
            // C_Ui_View.startLoadingShowAlert(C_CommonWebview.this, 0, "알 림", "웹 로딩 중 입니다 .. 잠시만 기다려주세요.", "확인");
            // --------------------------------------
            new Handler(Looper.getMainLooper()).postDelayed(new Runnable() {
                @Override
                public void run() {
                    if (loadingBar != null){
                        try { loadingBar.setVisibility(View.VISIBLE); } catch (Exception e){}
                    }
                }
            }, 0);
            // --------------------------------------
        }


4. 웹뷰 로딩 완료 및 에러 발생 시 예외 처리 콜백 메소드에서 네이티브 로딩 프로그레스 동작 종료 수행

  >> onPageFinished , onReceivedHttpError , onReceivedError , onReceivedSslError

            // --------------------------------------
            // [로딩 프로그레스 완료]
            // --------------------------------------
            // C_Ui_View.stopLoadingShowAlert(C_CommonWebview.this);
            // --------------------------------------
            new Handler(Looper.getMainLooper()).postDelayed(new Runnable() {
                @Override
                public void run() {
                    if (loadingBar != null){
                        try { loadingBar.setVisibility(View.GONE); } catch (Exception e){}
                    }
                }
            }, 0);
            // --------------------------------------

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






// --------------------------------------------------------------------------------------
[참고 사이트]
// --------------------------------------------------------------------------------------

[안드로이드 웹뷰 유틸 클래스]

https://blog.naver.com/kkh0977/222680670897?trackingCode=blog_bloghome_searchlist

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

​

 

반응형
Comments