facebook twitter hatena line email

「Android/webview/ダイアログ式loading」の版間の差分

提供: 初心者エンジニアの簡易メモ
移動: 案内検索
(ページの作成:「==サンプル== public class CustomWebView { private Context mContext; private WebView mWebView; private ProgressDialog mProgress; public CustomWebView(...」)
 
 
(同じ利用者による、間の2版が非表示)
行1: 行1:
 
==サンプル==
 
==サンプル==
 +
import android.app.ProgressDialog;
 +
import android.content.Context;
 +
import android.webkit.WebChromeClient;
 +
import android.webkit.WebResourceRequest;
 +
import android.webkit.WebView;
 +
import android.webkit.WebViewClient;
 +
import android.webkit.WebResourceError;
 +
import android.graphics.Bitmap;
 
  public class CustomWebView {
 
  public class CustomWebView {
 
     private Context mContext;
 
     private Context mContext;
行41: 行49:
 
             mProgress = null;
 
             mProgress = null;
 
         }
 
         }
         public void onReceivedError(WebView view, int errorCode, String description, String failingUrl) {
+
         public void onReceivedError(WebView view, WebResourceRequest request, WebResourceError error) {
 
             if (mProgress != null) {
 
             if (mProgress != null) {
 
               mProgress.dismiss();
 
               mProgress.dismiss();
行58: 行66:
 
               }
 
               }
 
               mProgress = null;
 
               mProgress = null;
 +
        }
 
       }
 
       }
    }
 
 
     }
 
     }
 
  }
 
  }

2018年8月23日 (木) 11:44時点における最新版

サンプル

import android.app.ProgressDialog;
import android.content.Context;
import android.webkit.WebChromeClient;
import android.webkit.WebResourceRequest;
import android.webkit.WebView;
import android.webkit.WebViewClient;
import android.webkit.WebResourceError;
import android.graphics.Bitmap;
public class CustomWebView {
   private Context mContext;
   private WebView mWebView;
   private ProgressDialog mProgress;
   public CustomWebView(Context context) {
       mContext = context;
   }
   // WebView指定
   public void setWebView(WebView webView) {
       mWebView = webView;
       mWebView.setWebViewClient(new CustomWebViewClient());
       mWebView.setWebChromeClient(new CustomWebChromeClient());
   }
   // 解放
   public void release() {
       mWebView = null;
       mContext = null;
   }
   // NowLoadingクラス
   private class CustomWebViewClient extends WebViewClient {
       public CustomWebViewClient(){
           super();
           mProgress = null;
       }
       // ページ表示開始イベント
       public void onPageStarted(WebView view, String url, Bitmap favicon) {
         // 2重起動防止
         if (mProgress != null) return;
         mProgress = new ProgressDialog(view.getContext());
           // プログレスバースタイル
           mProgress.setProgressStyle(ProgressDialog.STYLE_HORIZONTAL);
         mProgress.setMessage("Now Loading...");
           mProgress.show();
       }
       // ページ表示終了イベント
       public void onPageFinished(WebView view, String url){
           if (mProgress != null && mProgress.isShowing()){
             mProgress.dismiss();
           }
           mProgress = null;
       }
       public void onReceivedError(WebView view, WebResourceRequest request, WebResourceError error) {
           if (mProgress != null) {
             mProgress.dismiss();
           }
       }
   }
   private class CustomWebChromeClient extends WebChromeClient {
   @Override
   public void onProgressChanged(WebView view, int progress) {
     if (mProgress == null) return;
     mProgress.setProgress(progress);
     // 50%以上進んだら進捗ダイアログを閉じる(早めに閉じて見た目を高速化させる
     if (progress > 50) {
       if (mProgress != null && mProgress.isShowing()){
               mProgress.dismiss();
             }
             mProgress = null;
       }
     }
   }
}