1. 簡介
WebView是一個(gè)基于webkit引擎霉咨、展現(xiàn)web頁面的控件。
Android的Webview在低版本和高版本采用了不同的webkit版本內(nèi)核混狠,4.4后直接使用了Chrome。
2. 作用
顯示和渲染W(wǎng)eb頁面
直接使用html文件(網(wǎng)絡(luò)上或本地assets中)作布局
可和JavaScript交互調(diào)用
WebView控件功能強(qiáng)大矢渊,除了具有一般View的屬性和設(shè)置外枉证,還可以對url請求、頁面加載室谚、渲染秒赤、頁面交互進(jìn)行強(qiáng)大的處理。
3. 使用介紹
一般來說Webview可單獨(dú)使用入篮,可聯(lián)合其子類一起使用,所以接下來痊项,我會(huì)介紹:
Webview自身的常見方法酥诽;
Webview的最常用的子類
(WebSettings類、WebViewClient類塞弊、WebChromeClient類)
Android和Js的交互
3.1 Webview常用方法
我們都知道在Android上可以通過WebView加載網(wǎng)頁泪姨,但是能否加載html的源碼呢?答案是肯定的肮砾。一般條件下,我們可以在WebView上加載html的代碼眯勾。
3.1.1 加載url
html文件
WebView wView = (WebView)findViewById(R.id.wv1);
WebSettings wSet = wView.getSettings();
wSet.setJavaScriptEnabled(true);
//打開本包內(nèi)asset目錄下的index.html文件
wView.loadUrl("file:///android_asset/index.html");
// 打開本地sd卡內(nèi)的index.html文件
wView.loadUrl("content://com.android.htmlfileprovider/sdcard/index.html");
// 打開指定URL的html文件
wView.loadUrl("http://wap.baidu.com");
使用 LoadData 或者 loadDataWithBaseURL方法加載html代碼
有時(shí)候我們的webview可能只是html片段,而不是一個(gè)完整的網(wǎng)頁也颤,事實(shí)上絕大多數(shù)時(shí)候都是如此郁轻,完整的網(wǎng)頁無需做成應(yīng)用,而直接在瀏覽器訪問好唯。
這種情況我們使用 LoadData 或者 loadDataWithBaseURL方法骑篙,后者用的最多:
void loadDataWithBaseURL (String baseUrl, String data, String mimeType, String encoding, String historyUrl)
loadDataWithBaseURL()比loadData()多兩個(gè)參數(shù),可以指定HTML代碼片段中相關(guān)資源的相對根路徑靶端,也可以指定歷史Url,其余三個(gè)參數(shù)相同脏榆。
這里主要注意參數(shù)baseUrl镣煮,baseUrl指定了你的data參數(shù)中數(shù)據(jù)是以什么地址為基準(zhǔn)的,因?yàn)閐ata中的數(shù)據(jù)可能會(huì)有超鏈接或者是image元素镊折,而很多網(wǎng)站的地址都是用的相對路徑介衔,如果沒有baseUrl,webview將訪問不到這些資源炎咖。
String content="<p><fontcolor='red'>hellobaidu!</font></p>";
webview.loadDataWithBaseURL(null,content,"text/html","UTF-8",null);//加載定義的代碼乘盼,并設(shè)定編碼格式和字符集。
添加css樣式拼接html
實(shí)現(xiàn)新聞詳情頁面
String linkCss = "<style type=\"text/css\"> " +
"img {" +
"width:100%;" +
"height:auto;" +
"}" +
"body {" +
"margin-right:15px;" +
"margin-left:15px;" +
"margin-top:15px;" +
"font-size:45px;" +
"}" +
"</style>";
String html = "<html><header>" + linkCss + "</header>" + content + "</body></html>";
webView.loadData(html, "text/html", "uft-8");
//或者可以直接linkcss
String linkCss="<link href="file:///android_asset/目錄/style.css" rel="stylesheet" type="text/css" media="all">"