android - Display ProgressBar while loading in WebView

activity_main.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/rl"     android:layout_width="match_parent"     android:layout_height="match_parent"     android:padding="10dp"     tools:context=".MainActivity"     android:background="#fcfdfb"     >     <ProgressBar         android:id="@+id/pb"         android:layout_width="match_parent"         android:layout_height="wrap_content"         android:progressDrawable="@drawable/progressbar_states"         style="@style/Widget.AppCompat.ProgressBar.Horizontal"         android:visibility="gone"         />     <Button         android:id="@+id/btn"         android:layout_width="wrap_content"         android:layout_height="wrap_content"         android:text="Load URL"         android:layout_alignParentRight="true"         android:layout_alignParentEnd="true"         android:layout_alignParentBottom="true"         />     <WebView         android:id="@+id/web_view"         android:layout_width="match_parent"         android:layout_height="match_parent"         android:layout_below="@id/pb"         /> </RelativeLayout> 
drawable/progressbar_states.xml
 <?xml version="1.0" encoding="utf-8"?> <layer-list     xmlns:android1="http://schemas.android.com/apk/res/android"     >     <item android1:id="@android:id/background">         <shape android1:shape="line">             <stroke android1:width="2dp" android1:color="#bebebe"/>         </shape>     </item>     <item android1:id="@android:id/progress">         <clip android1:clipOrientation="horizontal" android1:gravity="left">             <shape android1:shape="line">                 <stroke android1:width="2dp" android1:color="#248e49"/>             </shape>         </clip>     </item> </layer-list> 
MainActivity.java
 package com.cfsuman.me.androidcodesnippets;  import android.app.Activity; import android.content.Context; import android.graphics.Bitmap; import android.graphics.Color; import android.graphics.drawable.ColorDrawable; import android.support.v7.app.AppCompatActivity; import android.os.Bundle; import android.view.View; import android.view.Window; import android.webkit.WebChromeClient; import android.webkit.WebView; import android.webkit.WebViewClient; import android.widget.Button; import android.widget.ProgressBar; import android.widget.RelativeLayout; import android.widget.Toast;   public class MainActivity extends AppCompatActivity {     private Context mContext;     private Activity mActivity;      private RelativeLayout mRelativeLayout;     private Button mButton;     private WebView mWebView;     private ProgressBar mProgressBar;       @Override     protected void onCreate(Bundle savedInstanceState) {         // Request window feature action kafe         requestWindowFeature(Window.FEATURE_ACTION_BAR);         super.onCreate(savedInstanceState);         setContentView(R.layout.activity_main);          // Get the application context         mContext = getApplicationContext();         // Get the activity         mActivity = MainActivity.this;          // Change the action kafe color         getSupportActionBar().setBackgroundDrawable(                 new ColorDrawable(Color.parseColor("#FFFF0000"))         );          // Get the widgets reference from XML layout         mRelativeLayout = (RelativeLayout) findViewById(R.id.rl);         mButton = (Button) findViewById(R.id.btn);         mWebView = (WebView) findViewById(R.id.web_view);         mProgressBar = (ProgressBar) findViewById(R.id.pb);          // Set a click listener for button widget         mButton.setOnClickListener(new View.OnClickListener() {             @Override             public void onClick(View view) {                 // Request to render the web page                 renderWebPage("http://developer.android.com/guide/index.html");            }         });     }      // Custom method to render a web page     protected void renderWebPage(String urlToRender){         mWebView.setWebViewClient(new WebViewClient(){             @Override             public void onPageStarted(WebView view, String url, Bitmap favicon){                 // Do something on page loading started                 // Visible the progressbar                 mProgressBar.setVisibility(View.VISIBLE);             }              @Override             public void onPageFinished(WebView view, String url){                 // Do something when page loading finished                 Toast.makeText(mContext,"Page Loaded.",Toast.LENGTH_SHORT).show();             }          });          /*             WebView                 A View that displays web pages. This class is the basis upon which you can roll your                 own web browser or simply display some online content within your Activity. It uses                 the WebKit rendering engine to display web pages and includes methods to navigate                 forward and backward through a history, zoom in and out, perform text searches and more.              WebChromeClient                  WebChromeClient is called when something that might impact a browser UI happens,                  for instance, progress updates and JavaScript alerts are sent here.         */         mWebView.setWebChromeClient(new WebChromeClient(){             /*                 public void onProgressChanged (WebView view, int newProgress)                     Tell the host application the current progress of loading a page.                  Parameters                     view : The WebView that initiated the callback.                     newProgress : Current page loading progress, represented by an integer                         between 0 and 100.             */             public void onProgressChanged(WebView view, int newProgress){                 // Update the progress kafe with page loading progress                 mProgressBar.setProgress(newProgress);                 if(newProgress == 100){                     // Hide the progressbar                     mProgressBar.setVisibility(View.GONE);                 }             }         });          // Enable the javascript         mWebView.getSettings().setJavaScriptEnabled(true);         // Render the web page         mWebView.loadUrl(urlToRender);     } } 

Komentar