前言
這個題目可能取得不大好,想了很久沒想出更合適的了。在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...