AndroidWebView參數設置明細! - 新聞資訊 - 雲南小程序開發|雲南軟件開發|雲南網站建設-昆明融晨信息技術有限公司

159-8711-8523

雲南網建設/小程序開發/軟件開發

知識

不(bù)管是(shì)網站,軟件還是(shì)小程序,都要(yào / yāo)直接或間接能爲(wéi / wèi)您産生價值,我們在(zài)追求其視覺表現的(de)同時(shí),更側重于(yú)功能的(de)便捷,營銷的(de)便利,運營的(de)高效,讓網站成爲(wéi / wèi)營銷工具,讓軟件能切實提升企業内部管理水平和(hé / huò)效率。優秀的(de)程序爲(wéi / wèi)後期升級提供便捷的(de)支持!

您當前位置>首頁 » 新聞資訊 » 技術分享 >

AndroidWebView參數設置明細!

發表時(shí)間:2021-1-4

發布人(rén):融晨科技

浏覽次數:73


WebView wv = new WebView(content);
WebSettings ws = wv.getSettings();

設置參數明細如下:
setPluginsEnabled(true) ;//支持插件
setUserWideViewPort(false) ;//将圖片調整到(dào)适合webview的(de)大(dà)小
setSupportZoom(true) ;//支持縮放
setLayoutAlgorithm(LayoutAlgrithm.SINGLE_COLUMN) ;//支持内容從新布局
supportMultipleWindows() ;//多窗口
setCacheMode(WebSettings.LOAD_CACHE_ELSE_NETWORK) ;//關閉webview中緩存
setAllowFileAccess(true) ;//設置可以(yǐ)訪問文件
setNeedInitialFocus(true) ;//當webview調用requestFocus時(shí)爲(wéi / wèi)webview設置節點
setjavaScriptCanOpenWindowsAutomatically(true) ;//支持通過JS打開新窗口
setLoadsImagesAutomatically(true) ;//支持自動加載圖片
setBuiltInZoomControls(true);
//支持縮放
webView.setInitialScale(35);
//設置縮放比例
webView.setScrollBarStyle(View.SCROLLBARS_OUTSIDE_OVERLAY);
//設置滾動條隐藏 
webView.getSettings().setGeolocationEnabled(true);
//啓用地(dì / de)理定位
webView.getSettings().setRenderPriority(RenderPriority.HIGH);
//設置渲染優先級
String dir = "/sdcard/temp";//設置定位的(de)數據庫路徑 
webView.getSettings().setGeolocationDatabasePath(dir);
這(zhè)裏是(shì)使用webview以(yǐ)及webview的(de)相關設置,課根據實際情況進行設置.
WebViewClient的(de)方法全解
doUpdateVisitedHistory(WebView view, String url ,boolean isReload)
更新曆史記錄
onFormResubmission(WebView view, Message dontResend, Message resend)
應用程序重新請求頁面數據
onLoadResource(WebView view, String url)
在(zài)加載頁面資源時(shí)會調用,每一個(gè)資源(比如圖片)的(de)加載都會調用一次
onPageStarted(WebView view, String url, Bitmap favicon)
這(zhè)個(gè)事件就(jiù)是(shì)開始載入頁面調用的(de),通常我們可以(yǐ)在(zài)這(zhè)個(gè)設定一個(gè)loading的(de)頁面,告訴用戶程序在(zài)等待網絡相應。
onPageFinished(WebView view, String url)
在(zài)頁面加載結束時(shí)調用,同樣道(dào)理,我們知道(dào)一個(gè)頁面載入完成,于(yú)是(shì)我們可以(yǐ)關閉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 發生改變時(shí)調用onUnhandledKeyEvent(WebView view, KeyEvent event)key事件未被加載時(shí)調用
shouldOverrideUrlLoading
并不(bù)是(shì)每次都在(zài)onPageStarted之(zhī)前開始調用的(de),就(jiù)是(shì)說(shuō)一個(gè)新的(de)URL不(bù)是(shì)每次都經過
shouldOverrideUrlLoading的(de),隻有在(zài)調用webview.loadURL的(de)時(shí)候才會調用。
//設置在(zài)同一個(gè)webview中打開新的(de)網頁
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中的(de)alertpublic boolean onJsAlert(WebView view, String url, String message, final JsResult result) {//構建一個(gè)Builder來(lái)顯示網頁中的(de)對話框
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//設置網頁加載的(de)進度條
public void onProgressChanged(WebView view, int newProgress) {MainAcitivity.this.getWindow().setFeatureInt(Window.FEATURE_PROGRESS, newProgress * 100);
super.onProgressChanged(view, newProgress);}
//設置應用程序的(de)标題
titlepublic void onReceivedTitle(WebView view, String title) {MainAcitivity.this.setTitle(title);
super.onReceivedTitle(view, title);}});
//判斷是(shì)否聯網
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();}}

相關案例查看更多