2

화면에 조각이 2 개인 타블렛 응용 프로그램에서 작업 중입니다. 한 조각은 WebView입니다. 기본적으로 사용자는 웹 페이지가로드되고 있음을 알리는 피드백을받지 못합니다.좋은 방법으로 WebView Fragment의 진행 상황을 표시합니다.

사용자 피드백을 제공하기 위해 페이지로드가 시작되면 진행 대화 상자가 표시되고 페이지가 완료되면 제거됩니다. 이 기능은 링크가 여러 번 리디렉션되는 경우를 제외하고 대부분의 경우 잘 작동합니다.

리디렉션이 발생하면 대화가 표시되고 여러 번 취소됩니다. 대화를 어둡게하는 것을 멈출 수 있다면 받아 들일 수있을 것 같지만 잠시 동안 검색 한 후에는이 작업을 수행 할 방법을 찾지 못했습니다.

이상적으로 웹 뷰 조각의 가운데에 로딩 바를 추가하고 작업이 완료되면 숨기거나 닫을 수 있다면 이상적입니다. 어떤 아이디어?

private class InnerWebViewClient extends WebViewClient { 
    @Override 
    public boolean shouldOverrideUrlLoading(WebView view, String url) { 

     view.loadUrl(url); 
     return true; 
    } 

    @Override 
    public void onPageStarted(WebView view, String url, Bitmap favicon) { 
     if (dialog==null) 
      dialog = new ProgressDialog(getActivity()); 
     dialog.setMessage("Loading..."); 
     dialog.setIndeterminate(true); 
     dialog.setCancelable(false); 
     dialog.show(); 
     Log.d("WEBVIEW", "loading "+ url); 
     super.onPageStarted(view, url, favicon); 
    } 

    @Override 
    public void onPageFinished(WebView view, String url) { 
     dialog.dismiss(); 
     mUrl=url; // save final url so user can open in deafult browser 
     super.onPageFinished(view, url); 
    } 

} 

답변

2

나는 이것을 매우 우아한 방법으로 생각했다.

사용자 정의 레이아웃을 만들었습니다.이 레이아웃에는 웹뷰와 진행 대화 상자가 가운데에 있습니다. 이 대화 상자는 처음에 GONE으로 설정되고 웹 페이지가 onPageStarted에로드 될 때 표시되도록 설정됩니다. onPageFinished 메소드에서 GONE으로 다시 설정됩니다.

조각이 onCreateView 메서드에서이 사용자 정의보기를 확장하고 반환합니다.

관련 문제