0

This is my second activity can anyone help me to add a progress text while loading the website, after the loading it should stop, help me to place the code in right place ,because i don't know much about java, i am just studying

package com.example.jaisonjoseph.newsclient;

import android.app.ProgressDialog;
import android.content.Context;
import android.graphics.Bitmap;
import android.net.ConnectivityManager;
import android.net.NetworkInfo;
import android.os.Bundle;
import android.app.Activity;
import android.support.design.widget.NavigationView;
import android.support.v7.widget.Toolbar;
import android.view.KeyEvent;
import android.view.View;
import android.webkit.WebView;
import android.webkit.WebViewClient;
import android.widget.ProgressBar;

public class Manorama extends Activity {

Toolbar toolbar=null;
public WebView mwebView;

    public static boolean isNetworkStatusAvialable (Context context) {
    ConnectivityManager connectivityManager = (ConnectivityManager)  
     context.getSystemService(Context.CONNECTIVITY_SERVICE);
    if (connectivityManager != null)
    {
        NetworkInfo netInfos = connectivityManager.getActiveNetworkInfo();
        if(netInfos != null)
            if(netInfos.isConnected())
                return true;
    }
    return false;
}

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


    if(isNetworkStatusAvialable (getApplicationContext())) {
        WebView view=(WebView) findViewById(R.id.webView2);
        view.getSettings().setJavaScriptEnabled(true);
        view.setWebViewClient(new WebViewClient());


        view.loadUrl("http://manoramaonline.com");
    } else {
        WebView view1=(WebView) findViewById(R.id.webView2);
        view1.getSettings().setJavaScriptEnabled(true);
        view1.setWebViewClient(new WebViewClient());
        view1.loadUrl("file:///android_asset/index.html");
    }
}
@Override
public boolean onKeyDown(int keyCode, KeyEvent event) {
    if (event.getAction()==KeyEvent.ACTION_DOWN)        {

        switch (keyCode) {
            case KeyEvent.KEYCODE_BACK:
                WebView webView = (WebView) findViewById(R.id.webView2);
                if (webView != null) {


                    if (webView.canGoBack()) {
                        webView.goBack();
                    } else {
                        finish();
                    }
                    return true;
                }

        }
    }
    return super.onKeyDown(keyCode, event);
  }


private class MyWebViewClient extends WebViewClient {
    ProgressBar bar=(ProgressBar)findViewById(R.id.progressBar);

    @Override
    public boolean shouldOverrideUrlLoading(WebView view, String url) {
        return false;
    }

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

1 Answers1

2

You should set WebViewClient for listening page loading started and finished. You can make that like:

Custom WebViewClient:

private class MyWebViewClient extends WebViewClient {
    @Override
    public boolean shouldOverrideUrlLoading(WebView view, String url) {
        return false;
    }

    @Override
    public void onPageStarted(final WebView view, final String url, final Bitmap favicon) {
        progress.setVisibility(View.VISIBLE);
        webView.setVisibility(View.GONE);
        super.onPageStarted(view, url, favicon);
    }
    @Override
    public void onPageFinished(WebView view, String url) {
        progress.setVisibility(View.GONE);
        webView.setVisibility(View.VISIBLE);
        super.onPageFinished(view, url);
    }
}

Set above client to your webView:

webView.setWebViewClient(new MyWebViewClient());

You can also add an TextView below your ProgressBar and set visibility of that. Good luck.

Batuhan Coşkun
  • 2,961
  • 2
  • 31
  • 48