webview 使用
1.為了使用與加載,必須使用網(wǎng)絡權限
<uses-permission android:name="android.permission.INTERNET" />
2.加載方式
1)動態(tài)加載
ex:
WebView webview = new WebView(this);
setContentView(webview);
webview.loadUrl("http://slashdot.org/");
String summary = "<html><body>You scored <b>192</b> points.</body></html>";
webview.loadData(summary, "text/html", null);
2)通過加載xml/html5
ex:
webview = (WebView) findViewById(R.id.webview);
webview.loadUrl("file:///android_asset/index.html");
3.webview的定制點
1)創(chuàng)建于設置webChromeClient子類,該類調用可能會影響瀏覽器用戶界面發(fā)生的東西汽畴,例如预柒,進度更新和javaSript警報發(fā)送在這里。
2)創(chuàng)建和設置webviewClient子類喳资,它被稱為當事情發(fā)送觉吭,影響內容的呈現(xiàn),例如錯誤與表單的提交仆邓。你也可以在這里攔截URL加載(通過shouldOverrideUrloading())
3)修改websetting 比如啟用javaScript setJavaScriptEnabled()鲜滩。
4)向webview使用addJvaScriptInterface注入java對象(對象,字符串)方法节值。這個方法允許將java對象注入到一個頁面的javaScript上下文徙硅,這樣他們可以通過javascript訪問的頁面。
ex:
//顯示進度與顯示錯誤
webview.setWebChromeClient(new WebChromeClient() {
public void onProgressChanged(WebView view, int progress) {
// Activities and WebViews measure progress with different scales.
// The progress meter will automatically disappear when we reach 100%
//進度
activity.setProgress(progress * 1000);
}
});
webview.setWebViewClient(new WebViewClient() {
//錯誤
public void onReceivedError(WebView view, int errorCode, String description, String failingUrl) {
Toast.makeText(activity, "Oh no! " + description, Toast.LENGTH_SHORT).show();
}
});
重點:WebChromeClient使用
getDefaultVideoPoster()
當video不playing時候搞疗,默認調用一張海報來顯示
獲得當前Video的進度
getVideoLoadingProgressView()
當前加載頁面進度改變
onProgressChanged(WebView view, int newProgress)
4.設置setting管理
1)要啟用內置變焦
webSettings.setBuiltlnZoomControls(boolen b)
內置的放大機制包括屏幕縮放控件,WebView的顯示內容,使用縮放手勢控制縮放嗓蘑。這些屏幕上的控件是否顯示可以設置與setDisplayZoomControls(布爾)。默認的是false。
注意:使用變焦脐往,如果高度或寬度設置為WRAP_CONTENT可能導致未定義行為休吠,應該避免。
2)啟用或禁止webView的Ulr訪問
setAllowContentAccess()
注意:內容的URL訪問允許webView加載內容從系統(tǒng)安裝一個內容提供者业簿,默認啟用
3)啟用或禁止文件訪問
setAllowFileAccess()
默認情況下為啟用瘤礁,注意,這個啟用和禁止文件系統(tǒng)訪問梅尤,資源仍未可使用文件//assrt res
4)JavaScript文件的上下文中運行方案是否應該允許URL訪問其他文件方案的內容的URL柜思。
使最嚴格,因此安全政策,應禁用此設置。注意,該設置將被忽略的價值如果getAllowUniversalAccessFromFileURLs()是正確的巷燥。注意,此設置只影響JavaScript訪問文件計劃資源赡盘。其他訪問這些資源,例如,從圖像的HTML元素,不受影響。為了防止可能違反ICE_CREAM_SANDWICH和早期設備上相同的域策略
setAllowUniversalAccessFromFileURLs//參考
5)是否使用應用程序的緩存api集
默認為false
SetAppCacheEnabled:
注意,為了使應用程序緩存API啟用,一個有效的數(shù)據(jù)庫路徑也必須提供給setAppCachePath(字符串)缰揪。
setAppCachePath :
設置應用程序緩存文件的路徑陨享。為了讓應用程序緩存API啟用,調用這個方法必須使用一個路徑,可以編寫的應用程序。這種方法應該只被調用為一次:重復調用將被忽略钝腺。
setAppCacheMaxSize
設置應用程序緩存內容的最大大小抛姑。傳遞的大小將被四舍五入為最接近的值,數(shù)據(jù)庫可以支持,這應被視為一個指南,不是硬限制。設置大小值小于當前數(shù)據(jù)庫大小不會引起數(shù)據(jù)庫修剪艳狐。默認大小是MAX_VALUE定硝。建議把最大大小設置為默認值。
6)是否使用內置的放大機制
setBuiltInZoomControls
內置的放大機制包括屏幕縮放控件,WebView的顯示內容,使用縮放手勢控制縮放毫目。這些屏幕上的控件是否顯示可以設置與setDisplayZoomControls(布爾)蔬啡。默認的是假的。 內置的機制是目前唯一支持放大機制,因此建議此設置總是啟用镀虐。
setDisplayZoomControls
設置是否顯示屏幕縮放控件
setDefaultZoom
設置默認放大
setSupportZoom
否應該支持使用其屏幕縮放控件和手勢縮放箱蟆。應該使用特定的放大機制,可以設置與setBuiltInZoomControls(布爾)。這個設置不會影響放大執(zhí)行使用zoomIn()和zoomOut()方法粉私。默認是正確的
supportZoom
WebView是否支持縮放顽腾。
7.覆蓋的方式使用緩存
setCacheMode
覆蓋的方式使用緩存。使用緩存的方式是基于導航類型诺核。對于一個正常的頁面加載,根據(jù)需要緩存的情況下將檢查和內容抄肖。當導航,內容不是重新檢驗它,而不是只是從緩存檢索的內容。這種方法允許客戶端通過指定LOAD_DEFAULT之一,覆蓋這一行為LOAD_CACHE_ELSE_NETWORK,LOAD_NO_CACHE或LOAD_CACHE_ONLY窖杀。默認值是LOAD_DEFAULT漓摩。
8.字體
setCursiveFontFamily
設置自定義字體名稱。默認值是“cursive”入客。
setDefaultFixedFontSize //fixed固定的
setDefaultFontSize
默認字體大小
setDefaultTextEncodingName
設置html默認編碼
setFantasyFontFamily
設置一個虛有的字體類型
setMinimumFontSize
設置最小字體大小
setSerifFontFamily
設置sans-serif類型字體
setStandardFontFamily
設置標準字體的名字
setTextSize
設置文本字體的大小
setTextZoom
設置文本頁面的縮放比例管毙。默認值是100腿椎。
9.設置是否使用數(shù)據(jù)庫儲存
setDatabaseEnabled
設置是否啟用數(shù)據(jù)庫存儲API。默認值是錯誤的夭咬。參見setDatabasePath(字符串)如何正確設置數(shù)據(jù)庫存儲API啃炸。這個設置是全球性的,在所有WebView實例的過程。注意你應該只修改這個設置之前做任何WebView頁面加載在一個給定的過程,隨著WebView實現(xiàn)可能忽視這一點后更改此設置卓舵。
setDatabasePath
數(shù)據(jù)庫儲存路徑
10.根據(jù)菜單項標志禁用操作模式菜單項南用。
setDisabledActionModeMenuItems
11.設置是否啟用了DOM 儲存 API。默認值是錯誤的掏湾。
setDomStorageEnabled
12.是否會實現(xiàn)平穩(wěn)過渡而平移或縮放或同時承載WebView沒有焦點的窗口裹虫。
setEnableSmoothTransition
如果這是真的,WebView將選擇一個解決方案來最大化性能。例如WebView的內容可能不是在過渡更新融击。如果它是假的,WebView將保持其忠誠筑公。默認值是錯誤的。
13.設置路徑保存地理定位數(shù)據(jù)庫
setGeolocationDatabasePath
為了定位權限和緩存位置被持久化,調用這個方法必須使用一個路徑,可以編寫的應用程序尊浪。
setGeolocationEnabled
是否啟用地理定位
14.告訴JavaScript來自動打開的窗口匣屡。
setJavaScriptCanOpenWindowsAutomatically
這適用于JavaScript函數(shù)window.open()。默認的是假的际长。
setJavaScriptEnabled
是否允許使用js
15.是否加載頁概述模式
setLoadWithOverviewMode
也就是說,鏡頭拉出寬度適合在屏幕上的內容耸采。這個設置時考慮內容的寬度大于WebView控件的寬度,例如,當getUseWideViewPort()啟用兴泥。默認的是假的
16.是否需要用戶手勢播放媒體工育。默認是正確的。
setMediaPlaybackRequiresUserGesture
17.集合的最小邏輯字體大小搓彻。默認是8如绸。
setMinimumLogicalFontSize
18.設置渲染線程的優(yōu)先級。
setRenderPriority
與其他的設置,這個只需要每個進程被調用為一次旭贬。默認值是正常的怔接。
19.設置是否保存表單數(shù)據(jù)
setSaveFormData
默為true;
setSavePassword
保存密碼
20.是否支持多個窗口。
setSupportMultipleWindows
如果設置為真,onCreateWindow(WebView稀轨、布爾扼脐、布爾值、消息)必須由主機應用程序實現(xiàn)奋刽。默認的是假的瓦侮。
supportMultipleWindows
WebView是否支持多個窗口。
5.設置Cookie緩存與window管理
由于瀏覽器與應用軟件的cookie不共享佣谐,所以應用程序應該有自己的緩存
6.webview的方法
1)注入js接口肚吏,可以通過js調用移動的方法
addJavascriptInterface(Object object, String name)
removeJavascriptInterface(String name)
2)返回鍵的調用
canGoBack() 得到這個WebView是否有回來的歷史項目。
canGoBackOrForward(int) 頁面是否可以給定數(shù)量的步驟上向前或向后移動狭魂。
canGoForward() 得到這個WebView是否有向前的歷史項目罚攀。
clearHistory() 清除列表清單
copyBackForwardList() 復制back清單列表
goBack() //回到緩存列表
goBackOrForward(int steps)
goForward()
3)清除緩存資源
clearCache(boolean includeDiskFiles)
4)獲取當前頁面的進度
getProgress()
5)獲取當前頁面的url
getUrl()
6)將給定數(shù)據(jù)加載到這個URL WebView使用“數(shù)據(jù)”方案党觅。
將給定數(shù)據(jù)加載到這個URL WebView使用“數(shù)據(jù)”方案。
loadData(String data, String mimeType, String encoding)
將給定數(shù)據(jù)加載到這個WebView,使用baseUrl作為基本URL的內容斋泄。
loadDataWithBaseURL(String baseUrl, String data, String mimeType, String encoding, String historyUrl)
7)回復一個webview后調用方法
onResume()
8)保存當前狀態(tài)
saveState(Bundle outState)
9)注冊接口時使用的渲染引擎,不能處理的內容,應該下載杯瞻。
setDownloadListener(DownloadListener listener)
10)使調試web內容(HTML / CSS / JavaScript)加載到該應用程序的任何webview。
setWebContentsDebuggingEnabled(boolean enabled)
11)停止當前加載
stopLoading()
1.webView 使用定位功能:
1)權限:
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION"/>
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION"/>
2.屬性設置
webSettings =webView.getSettings();// 網(wǎng)頁設置默認屬性
webView.setInitialScale(39);// 適應豎屏
webView.setScrollBarStyle(View.SCROLLBARS_INSIDE_OVERLAY);// 去掉底部和右邊的滾動條
// webSettings.setRenderPriority(RenderPriority.HIGH);// 提高渲染優(yōu)先級
webSettings.setJavaScriptEnabled(true);// 設置是否可以交互Javascript
webSettings.setAllowFileAccess(true);// 啟用或禁止WebView訪問文件數(shù)據(jù)
webSettings.setLayoutAlgorithm(LayoutAlgorithm.SINGLE_COLUMN);// 設置顯示模式
webSettings.setDefaultZoom(ZoomDensity.MEDIUM);// 適應屏幕
// webView.getSettings().setUseWideViewPort(true);// 是否任意比例縮放
webView.getSettings().setLoadWithOverviewMode(true);// 縮放至屏幕的大小
// webView.getSettings().setUseWideViewPort(true);// 是否任意比例縮放
webSettings.setBuiltInZoomControls(false);// 設置是否支持縮放
// webSettings.setSupportZoom(false);// 設置是否支持變焦,僅支持雙擊縮放
webSettings.setNeedInitialFocus(false);// 設置是否可以訪問文件
// webSettings.setBlockNetworkImage(true);// 加載圖片放在最后加載渲染
// webSettings.setCacheMode(WebSettings.LOAD_CACHE_ELSE_NETWORK);//
// 設置緩存模式
webSettings.setCacheMode(webSettings.LOAD_NO_CACHE);// 不使用緩存
// 這里的名稱就是在頁面window.fxl.testFunction()所取的別名
//js調用移動端方法
webView.addJavascriptInterface(new Scan2(),"mMap");
//關鍵setGeolocationEnabled
webView.getSettings().setGeolocationEnabled(true);//開啟定位
webView.setWebChromeClient(new WebChromeClient() {
@Override
public void onGeolocationPermissionsShowPrompt(String origin,
android.webkit.GeolocationPermissions.Callback callback) {
callback.invoke(origin, true, false);
super.onGeolocationPermissionsShowPrompt(origin, callback);
}