Sunday 19 November 2017

Add Progress Dialog in WebView in Android

Show progress Dialog while loading webview in android and hide progress Dialog automatically after webview page finish loading.

FULL VIDEO HERE:-

Their are mainly 3 files use in this project:-
1. src/WebActivity.java :-WebActivity class that Show progress bar while loading webview in android and hide progress bar automatically after webview page finish loading
2.res/layout/activity_web.xml :-activity_web.xml is the layout file of WebActivity.java
3.manifests/AndroidManifest.xml :-use this user permission in androidManifest.xml
 <uses-permission android:name="android.permission.INTERNET" />

 CODING START HERE->>                          
STEP 1. Create a new Project WebviewWithProgressbar in Android Studio.
STEP 2. manifests/AndroidManifest.xml :-use this user permission in  androidManifest.xml
 <uses-permission android:name="android.permission.INTERNET" />
          
                  AndroidManifest.xml
   <?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.example.amitrawat.webviewwithprogressbar">
<uses-permission android:name="android.permission.INTERNET" />
<application
    android:allowBackup="true"
    android:icon="@mipmap/ic_launcher"
    android:label="ProgrammingCodeTech"
    android:supportsRtl="true"
    android:theme="@style/AppTheme">
    <activity android:name=".WebActivity">
        <intent-filter>
            <action android:name="android.intent.action.MAIN" />
            <category android:name="android.intent.category.LAUNCHER" />
        </intent-filter>
    </activity>
</application>
</manifest>

STEP 3Write code in java file WebActivity.java and xml file activity_web.xml under -
1. res/layout/activity_web.xml :-activity_web.xml is the layout file of                                   WebActivity.java
                        activity_web.xml
 <?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:id="@+id/activity_web"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context="com.example.amitrawat.webviewwithprogressbar.WebActivity">
<WebView
    android:id="@+id/webview"
    android:layout_width="match_parent"
    android:layout_height="match_parent"/>
</RelativeLayout>

1. src/WebActivity.java :-WebActivity class that Show progress bar while loading webview in android and hide progress bar automatically after webview page finish loading.
                            WebActivity.java
 package com.example.amitrawat.webviewwithprogressbar;
import android.app.ProgressDialog;
import android.os.Bundle;
import android.support.v7.app.AppCompatActivity;
import android.view.View;
import android.webkit.WebView;
import android.webkit.WebViewClient;
import android.widget.Toast;
public class WebActivity extends AppCompatActivity {
    private WebView wv;
    private ProgressDialog pd;
    String url "http://programmingcodetech.blogspot.in";
    @Override    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_web);
        wv = (WebView) findViewById(R.id.webview);
        pd new ProgressDialog(WebActivity.this);
        pd.setMessage("Loading website........");
        wv.setWebViewClient(new Mybrowser(pd));
        wv.getSettings().setLoadsImagesAutomatically(true);
        wv.getSettings().setJavaScriptEnabled(true);
        wv.setScrollBarStyle(View.SCROLLBARS_INSIDE_OVERLAY);
        wv.loadUrl(url);
    }
    //class for opening webview 
   public class Mybrowser extends WebViewClient {
        ProgressDialog pd;
        public Mybrowser(ProgressDialog pd) {
            this.pd = pd;
            pd.show();
        }
        @Override   
       public boolean shouldOverrideUrlLoading(WebView view, String url) {
            view.loadUrl(url);
            return super.shouldOverrideUrlLoading(view, url);
        }
        @Override   
       public void onPageFinished(WebView view, String url) {
            super.onPageFinished(view, url);
            if (pd.isShowing()) {
                pd.dismiss();
            }
        }
        @Override        public void onReceivedError(WebView view,
                 int errorCode, String description, String failingUrl) {
            super.onReceivedError(view, errorCode, description, failingUrl);
            Toast.makeText(getApplicationContext(),
                       "Error:" + description, Toast.LENGTH_SHORT).show();
        }
    }
}

No comments:

Post a Comment