마스터Q&A 안드로이드는 안드로이드 개발자들의 질문과 답변을 위한 지식 커뮤니티 사이트입니다. 안드로이드펍에서 운영하고 있습니다. [사용법, 운영진]

webview progressbar 없앨 수 있나요..?

0 추천

 

이 위에 나타나는 저 파란색이요

 

페이지로딩할때 안나타났으면 좋겠는데 어떻게하나요?

 

아래 소스와 같이 프로그레스바 생성해서 없앴는데 계속 보입니다 ㅠ

 

public class MainActivity extends AppCompatActivity {

    private static WebView mNsokWebView = null;                                 // NSOK WebView
    private SwipeRefreshLayout mSwipeRefreshLayout = null;                      // 아래로 당겨서 새로고침 레이아웃
    private AppExitPreventUtil mAppExitPreventHandler = null;                   // 뒤로가기 한 번에 앱 죽이는 것 방지 핸들러
    private ProgressBar mProgressBar = null;                                    // showing bar while web page loading

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        initializeWebView();

        mAppExitPreventHandler = new AppExitPreventUtil(this);
    }

    private void initializeWebView() {
        mNsokWebView = (WebView) findViewById(R.id.nsok_webView);
        mProgressBar = new ProgressBar(this);
        mProgressBar.setVisibility(View.GONE);
        mNsokWebView.setWebChromeClient(new NsokWebChromeClient());
        mNsokWebView.setWebViewClient(new NsokWebViewClient());
        mNsokWebView.getSettings().setJavaScriptEnabled(true);

        mNsokWebView.addJavascriptInterface(new NsokBridge(this), "nsok_bridge");

        mNsokWebView.loadUrl(Nsok.connWebUrl);

        // 아래로 당겨서 새로고침.

        mSwipeRefreshLayout = (SwipeRefreshLayout) findViewById(R.id.swipe_container);
        mSwipeRefreshLayout.setOnRefreshListener(new SwipeRefreshLayout.OnRefreshListener() {
                                                     @Override
                                                     public void onRefresh() {
                                                         if (mSwipeRefreshLayout.isRefreshing()) {
                                                             mSwipeRefreshLayout.setRefreshing(false);
                                                         }
                                                         mNsokWebView.reload();
                                                     }
                                                 }
        );
    }
윤둥이 (4,560 포인트) 님이 2017년 10월 24일 질문

1개의 답변

0 추천
https://stackoverflow.com/questions/11241513/android-progessbar-while-loading-webview

해당 프로그래스 항목은 웹뷰 클라이언트 클래스 내부에 구현되어 있을겁니다....
익명사용자 님이 2017년 10월 24일 답변
안녕하세요..

해당 링크 봤는데요..

ProgressBar (widget class에 있는 놈) 을 매개변수로 받는 웹뷰클라이언트 클래스 생성자를 만들면 외부에서 setWebviewClient 해줄 때 ProgressBar를 넘겨야하잖아요..?

잘 이해가 안되는데..
웹뷰의 프로그래스를 구현하기 위해서는 반드시 웹뷰 클라이언트의 onPagestart와 onPageEnd메소드를 통해야 하기 때문에 추가한 링크입니다.

해당 메소드 안에보면 프로그래스바 객체가 있을겁니다.
final class NsokWebViewClient extends WebViewClient {

        @Override
        public void onPageStarted(WebView view, String url, Bitmap favicon) {
            super.onPageStarted(view, url, favicon);
        }

        @Override
        public void onPageFinished(WebView view, String url) {
            super.onPageFinished(view, url);
        }

이렇게 오버라이드되는데.. 프로그래스바 객체가 어디있나요 ㅠㅠ
그럼 해당 프로그래스를 로딩 이후에 안숨긴다는 얘긴데..웹크롬클라이언트의 onProgressChange를 한번 보세요.
...