サンプルソースで紹介しています。
タイトルバーにページを読み込む時のクルクル回る”あれ”を表示させる方法は
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;
}
}



