webview如何載入HTML,CSS等語言

2021-08-10 20:36:42 字數 2230 閱讀 9126

前言

這個題目可能取得不大好,想了很久沒想出更合適的了。在android開發webview的時候,有的時候後台不一定給的就是乙個url,而是把一些html,css,js語言**給你,然後你自行組裝出webview能夠識別的語言,並載入到頁面當中。

示例

/**

* body : ...

* image_source : 《四月物語》

* title : 我喜歡你,但你別喜歡我:囚禁在單相思中的性單戀者

* image :

* share_url :

* js :

* ga_prefix : 122713

* images : [""]

* type : 0

* id : 9100667

* css : [""]

*/

假如後台給你乙個url,而url實則是json資料對應的連線,並不能直接載入到webview當中,此時該如何解決。這個問題我可以說是一年前就遇到了,後來一是不知道怎麼查,在網上沒有找到相應的資料,二是身邊沒有前端的人來指導,今天問過了前端的同事,才明白了一二。

**分析

在往常前端開發當中一般都是自己寫html和css**,然後顯示在瀏覽器,也就android中的webview。對於android這種情況,只能拼接**。後台提供相應**,android開發自己拼接。其實沒有那麼想象中的那麼難,因為說到底都是字串,對字串進行一定的格式化就能輕易達到效果。

**實現

public class htmlutil 

/*** 根據css鏈結生成link標籤

* @param url string

* @return string

*/public static string createcsstag(string url)

/*** 根據多個css鏈結生成link標籤

* @param urls list* @return string

*/public static string createcsstag(listurls)

return sb.tostring();

}/**

* 根據js鏈結生成script標籤

** @param url string

* @return string

*/public static string createjstag(string url)

/*** 根據多個js鏈結生成script標籤

** @param urls list* @return string

*/public static string createjstag(listurls)

return sb.tostring();

}/**

* 根據樣式標籤,html字串,js標籤

* 生成完整的html文件

*/public static string createhtmldata(string html, listcsslist, listjslist)

}

這是個工具類,專門用於將html,css等語言連線成html。先來看我們使用的方法createhtmldata,返回的是string連線的乙個字串,concat方法如下:

image.png

css:將json中的css**取出來,並加上字首

hide_header_style:定義整體html的style

html:這個直接就是json資料當中的html**

js:將json中的js**取出來,並加上字首。

加標籤字首就是利用string.format(needed_format_js_tag, url);方法,將前面格式中的%s,替換成後邊的**。

引用到webview

string htmldata = htmlutil.createhtmldata(entity.getbody(), entity.getcss(), entity.getjs());

webview.loaddata(htmldata, htmlutil.mime_type, htmlutil.encoding);

源**引用

image.png

webview載入html內容

android在應用內部載入網頁一般會使用到weibview 這個東東,而且大部分都是直接掉weibview 的loadurl 方法 這裡我筆記乙個另類的載入html的方法 loaddata datastr,mimetype,encoding datastr是html 直接是中的所有內容,例如後台設...

WebView 載入本地的html

1 可以是用loaddata,這種方法需要先將html檔案讀取出來,以字串傳入loaddata,可以展示頁面,但是不會引用css js等檔案。2 使用loadurl,不過需要注意,這裡因為是使用本地資料,所以傳入的url需要做些處理,例如 a 如果html檔案存於assets 則加字首 file a...

webview載入優化

override public webresourceresponse shouldinterceptrequest webview view,string url else if url.contains 20.b7e931615e2f93316749.js else if url.contain...