s.k.Soni
s.k.Soni

Reputation: 1310

Loading process getting delay when load any page in android webview

I am using android in that I am calling a link via webview. Now, the problem is that whenever I click any button or call any page of that link at that time after some second progress bar coming i.e. progress bar performance is delay while load anything.

From this problem user can't know that button/link has been clicked or not, without getting any progress bar sign, and hence from that user clicked many times that button/link.

Here is my android code of MainActivity.java,

public class MainActivity extends AppCompatActivity {
    WebView webView;
    ProgressBar bar;

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

        bar = (ProgressBar)findViewById(R.id.progressBar2);
        webView = (WebView) findViewById(R.id.webView);

        WebSettings webSettings = webView.getSettings();

        webView.getSettings().setJavaScriptEnabled(true);
        webView.getSettings().setLoadWithOverviewMode(true);
        webView.getSettings().setAppCacheEnabled(true);

        webView.setWebViewClient(new myWebClient());

        webView.loadUrl("http://florro-001-site2.etempurl.com/");
    }

    public class myWebClient extends WebViewClient{

        @Override
        public void onPageFinished(WebView view, String url) {
            bar.setVisibility(View.GONE);
            view.setVisibility(webView.VISIBLE);
            super.onPageFinished(view, url);
        }

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

        @Override
        public boolean shouldOverrideUrlLoading(WebView view, String url) {
            boolean overrideUrlLoading = false;
            view.loadUrl(url);
            return true;
        }
    }

    @Override
    public boolean onKeyDown(int keyCode, KeyEvent event) {
        if((keyCode == KeyEvent.KEYCODE_BACK) && webView.canGoBack()){
            webView.goBack();
            return true;
        }
        return super.onKeyDown(keyCode, event);
    }
}

I searched many things but related topics I didn't get.

Upvotes: 1

Views: 1248

Answers (1)

Usama Altaf
Usama Altaf

Reputation: 118

use bar.setVisibility(View.VISIBLE); in the shouldOverrideUrlLoading not in onPageStarted try to use like that

public class myWebClient extends WebViewClient{

    @Override
    public void onPageFinished(WebView view, String url) {
        bar.setVisibility(View.GONE);
        view.setVisibility(webView.VISIBLE);
        super.onPageFinished(view, url);
    }

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

    @Override
    public boolean shouldOverrideUrlLoading(WebView view, String url) {
        boolean overrideUrlLoading = false;
        view.loadUrl(url);
        bar.setVisibility(View.VISIBLE);
        return true;
    }
}

Upvotes: 1

Related Questions