サンプルソースで紹介しています。
タイトルバーにページを読み込む時のクルクル回る”あれ”を表示させる方法は
requestWindowFeature(Window.FEATURE_INDETERMINATE_PROGRESS);
ページの読み込みの進捗を表すプログレスバーの表示は
requestWindowFeature(Window.FEATURE_PROGRESS);
いづれも、タイトルバーを非表示にすると、
表示されないので、気を付けてください。
サンプルソースでは、urlの読み込み時に
urlを分析して、GooglePlayの画面に遷移させたり、
メーラーのスキームを検知した時の処理を記述しています。
また、WebViewのプラグインも何個か入れているので、
よかったら、サンプルソースのコメントアウトを確認してください。
■サンプルソース
package com.example.webview; import android.net.Uri; import android.os.Bundle; import android.app.Activity; import android.content.Intent; import android.graphics.Bitmap; import android.view.Window; import android.webkit.WebChromeClient; import android.webkit.WebSettings.PluginState; import android.webkit.WebView; import android.webkit.WebViewClient; import android.widget.LinearLayout; import android.widget.Toast; public class MainActivity extends Activity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); //レイアウトの作成 LinearLayout oLayout = new LinearLayout(getApplicationContext()); //ページ読み込み中にぐるぐる回す requestWindowFeature(Window.FEATURE_INDETERMINATE_PROGRESS); //ページ読み込みの進捗を棒で表示 requestWindowFeature(Window.FEATURE_PROGRESS); //WebVIewの生成・設定 WebView oWebview = Create_WebView(); //WebViewをレイアウトに追加 oLayout.addView(oWebview); //レイアウトの設定 setContentView(oLayout); //最初に読み込むページの設定 oWebview.loadUrl("http://google.co.jp"); } private WebView Create_WebView(){ WebView view = new WebView(this); //JSに対応 view.getSettings().setJavaScriptEnabled(true); //拡大できるようにする view.getSettings().setBuiltInZoomControls(true); //Web Storageを使う。Fcebookで使われている view.getSettings().setDomStorageEnabled(true); //FLASH対応 view.getSettings().setPluginsEnabled(true); view.getSettings().setPluginState(PluginState.ON); setProgressBarIndeterminateVisibility(true); setProgressBarVisibility(true); try { view.setWebViewClient(new WebViewClient() { //ページの読み込み完了時に呼ばれる @Override public void onPageFinished(WebView view, String url) { super.onPageFinished(view, url); //プロセスバーの表示終了 setProgressBarIndeterminateVisibility(false); } //ページの読み込み時に呼ばれる @Override public void onPageStarted(WebView view, String url, Bitmap favicon) { super.onPageStarted(view, url, favicon); //プロセスバーの表示開始 setProgressBarIndeterminateVisibility(true); } //ページの読み込み前に呼ばれる。urlごとの処理はここで記述 @Override public boolean shouldOverrideUrlLoading(WebView view,String url){ Toast.makeText(getApplicationContext(), url, Toast.LENGTH_SHORT).show(); //メーラーの立ち上げスキームを検知 if(url.substring(0, 7).equals("mailto:")) { view.stopLoading(); Uri uri = Uri.parse(url); //メーラーを立ち上げる Intent intent = new Intent(Intent.ACTION_SENDTO, uri); startActivity(intent); finish(); //Google Playのスキームを検知 }else if (url.startsWith("market://")){ //Google Playに飛ばす Intent i = new Intent(Intent.ACTION_VIEW, Uri.parse(url)); startActivity(i); return true; //他は全部読み込む }else{ view.loadUrl(url); } return true; } }); // インジケータの表示 view.setWebChromeClient(new WebChromeClient() { @Override public void onProgressChanged(WebView view, int progress) { setProgress(progress * 100); if(progress == 100) { setProgressBarIndeterminateVisibility(false); setProgressBarVisibility(false); } } }); } catch (Exception e) { Toast.makeText(this, e.getMessage(), Toast.LENGTH_LONG).show(); } return view; } }
0 件のコメント:
コメントを投稿