Android WebView 參數設定明細!,androidwebview
WebView wv = new WebView(content);
WebSettings ws = wv.getSettings();
設定參數明細如下:
setPluginsEnabled(true) ;//支援外掛程式
setUserWideViewPort(false) ;//將圖片調整到適合webview的大小
setSupportZoom(true) ;//支援縮放
setLayoutAlgorithm(LayoutAlgrithm.SINGLE_COLUMN) ;//支援內容從新布局
supportMultipleWindows() ;//多視窗
setCacheMode(WebSettings.LOAD_CACHE_ELSE_NETWORK) ;//關閉webview中緩衝
setAllowFileAccess(true) ;//設定可以訪問檔案
setNeedInitialFocus(true) ;//當webview調用requestFocus時為webview設定節點
setjavaScriptCanOpenWindowsAutomatically(true) ;//支援通過JS開啟新視窗
setLoadsImagesAutomatically(true) ;//支援自動載入圖片
setBuiltInZoomControls(true);
//支援縮放
webView.setInitialScale(35);
//設定縮放比例
webView.setScrollBarStyle(View.SCROLLBARS_OUTSIDE_OVERLAY);
//設定捲軸隱藏
webView.getSettings().setGeolocationEnabled(true);
//啟用地理定位
webView.getSettings().setRenderPriority(RenderPriority.HIGH);
//設定渲染優先順序
String dir = "/sdcard/temp";//設定定位的資料庫路徑
webView.getSettings().setGeolocationDatabasePath(dir);
這裡是使用webview以及webview的相關設定,課根據實際情況進行設定.
WebViewClient的方法全解
doUpdateVisitedHistory(WebView view, String url ,boolean isReload)
更新記錄
onFormResubmission(WebView view, Message dontResend, Message resend)
應用程式重新請求頁面資料
onLoadResource(WebView view, String url)
在載入頁面資源時會調用,每一個資源(比片)的載入都會調用一次
onPageStarted(WebView view, String url, Bitmap favicon)
這個事件就是開始載入頁面調用的,通常我們可以在這個設定一個loading的頁面,告訴使用者程式在等待網路相應。
onPageFinished(WebView view, String url)
在頁面載入結束時調用,同樣道理,我們知道一個頁面載入完成,於是我們可以關閉loading條,切換程式動作。
onReceivedError(WebView view, int errorCode, String description, String failingUrl)
報告錯誤資訊onReceivedHttpAuthRequest(WebView view, HttpAuthHandler handler, String host,Stirng realm)
擷取返回資訊授權請求onScaleChanged(WebView view, float oldScale, float newScale)WebView 發生改變時調用onUnhandledKeyEvent(WebView view, KeyEvent event)key事件未被載入時調用
shouldOverrideUrlLoading
並不是每次都在onPageStarted之前開始調用的,就是說一個新的URL不是每次都經過
shouldOverrideUrlLoading的,只有在調用webview.loadURL的時候才會調用。
//設定在同一個webview中開啟新的網頁
webView.setWebViewClient(new WebViewClient(){ public boolean shouldOverrideUrlLoading(WebView view, String url) { view.loadUrl(url); return true; } });
//設定WebChromeClientwebView.setWebChromeClient(new WebChromeClient(){//配置許可權
public void onGeolocationPermissionsShowPrompt(String origin,GeolocationPermissions.Callback callback){callback.invoke(origin, true, false);
super.onGeolocationPermissionsShowPrompt(origin, callback);}
//處理javascript中的alertpublic boolean onJsAlert(WebView view, String url, String message, final JsResult result) {//構建一個Builder來顯示網頁中的對話方塊
Builder builder = new Builder(MainAcitivity.this);
builder.setTitle("提示");
builder.setMessage(message);
builder.setPositiveButton(android.R.string.ok,new AlertDialog.OnClickListener() {public void onClick(DialogInterface dialog, int which) {result.confirm();}});
builder.setCancelable(false);
builder.create();
builder.show();
return true;
@Override//設定網頁載入的進度條
public void onProgressChanged(WebView view, int newProgress) {MainAcitivity.this.getWindow().setFeatureInt(Window.FEATURE_PROGRESS, newProgress * 100);
super.onProgressChanged(view, newProgress);}
//設定應用程式的標題
titlepublic void onReceivedTitle(WebView view, String title) {MainAcitivity.this.setTitle(title);
super.onReceivedTitle(view, title);}});
//判斷是否連網
ConnectivityManager cm;
cm = (ConnectivityManager) getSystemService(Context.CONNECTIVITY_SERVICE);
boolean isWifiConnected=cm.getNetworkInfo(ConnectivityManager.TYPE_WIFI).getState() == NetworkInfo.State.CONNECTED;
if(!isWifiConnected){boolean isGprsConnected=cm.getNetworkInfo(ConnectivityManager.TYPE_MOBILE).getState() == NetworkInfo.State.CONNECTED;
if(!isGprsConnected){new AlertDialog.Builder(this) .setTitle("提示" ) .setMessage("離線狀態,啟用離線模式" ) .setPositiveButton("確定" , null ) .show(); }else{result = CallWCF();}}