android 記一次富文本加載之路

文章鏈接:https://mp.weixin.qq.com/s/69TRkmFL1aNuSqfw4ULMJw

項目中經(jīng)常涉及到富文本的加載,后臺管理端編輯器生成的一段html 代碼要渲染到移動端上面,一種方法是前端做成html頁面,放到服務(wù)器上,移動端這邊直接webView 加載url即可,還有一種后臺接口直接返回這段html富文本的,String類型的,移動端直接加載的;具體的需求按實際情況而定,webview直接加載url的就不說了,這里主要說說關(guān)于直接加載html的。

一段簡單的html代碼

private String txt = "<div>\n" +
            "<a style=\"font-size: 3s0px\" href=\"https://www.manjiexiang.cn/\">程序猿TX</a>\n" +
            "</div>\n" +
            "<img src=\"https://www.manjiexiang.cn/upload/file/2018/05/01/qrcode_for_gh_4185bf56352c_258_1.jpg\">\n";

原生webView 加載富文本

原生的webView 直接加載

webView.loadDataWithBaseURL(null,txt,"text/html","UTF-8",null);

如果是textView 有setText(Html.fromHtml(txt))方法,但是這種加載方式,圖片無法在textView顯示。
如果非要使用textView 加載...

第三方庫加載富文本

這里我使用的是RichText 第三方庫

implementation ('com.zzhoujay.richtext:richtext:3.0.7'){
        exclude group: 'com.android.support'
}

同時排除了support包的沖突,使用上

RichText.initCacheDir(this);

RichText.from(txt).into(tv);

更多的方法可以去github上查看,這種方式圖片是可以加載的,但是css的樣式是沒法呈現(xiàn)的。

以上的兩種方式按自己的需求來進行使用的,試用于后臺接口直接返回數(shù)據(jù)給移動端進行加載的。

加載html文件

一般的webView直接加載url體驗上沒那么流暢,相對的加載html文件會好點。后臺依舊返回html數(shù)據(jù)給移動端,前端負責(zé)寫html 文件模板,android將html文件放在assets 文件夾下面,通過webView.loadUrl("file:///android_asset/**.html")加載,至于數(shù)據(jù),就是移動端與前端的交互了,之前推薦過一個三方庫 android與js的交互之jsbridge使用
,通過這種方式將數(shù)據(jù)傳遞給前端,同時可以監(jiān)聽到j(luò)s的方法調(diào)用。
這種方式更加適用于一個頁面模板可以反復(fù)使用的,后臺返回不同的數(shù)據(jù)進行加載。一個場景就是 viewpager里面的每個fragment頁面結(jié)構(gòu)相同,如果使用url加載,每個fragment里的webview去加載一個url,這種在體驗上就不是很優(yōu)雅,而使用html文件加載的方式,后臺可以返回list 數(shù)據(jù)給移動端,對應(yīng)的去用webview加載本地文件,把各項的數(shù)據(jù)傳給前端展示,加載渲染的速度上會快點。當(dāng)然如果原生的可以直接渲染頁面的,優(yōu)先原生的。
如果是那種單頁面,只是瀏覽功能的,類似于 "關(guān)于我們" 那種頁面可以直接用url加載的。

這篇文章主要介紹的是關(guān)于html 加載的,目前我們使用的是第三種方式的,不同的需求場景得根據(jù)各個項目來定的,關(guān)于第三種加載 html 文件的,后續(xù)再寫一篇文章介紹移動端與前端交互的,而且我們加載的富文本內(nèi)容相對的也不一樣。

歡迎關(guān)注我的個人博客:https://www.manjiexiang.cn/

更多精彩歡迎關(guān)注微信號:春風(fēng)十里不如認識你
一起學(xué)習(xí),一起進步,歡迎上車,有問題隨時聯(lián)系,一起解決!?。?/p>

image
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • Android 自定義View的各種姿勢1 Activity的顯示之ViewRootImpl詳解 Activity...
    passiontim閱讀 179,063評論 25 709
  • 用兩張圖告訴你,為什么你的 App 會卡頓? - Android - 掘金 Cover 有什么料? 從這篇文章中你...
    hw1212閱讀 14,007評論 2 59
  • 1、通過CocoaPods安裝項目名稱項目信息 AFNetworking網(wǎng)絡(luò)請求組件 FMDB本地數(shù)據(jù)庫組件 SD...
    陽明AI閱讀 16,206評論 3 119
  • 去年拍的,老家小縣城的公園。
    時光記憶師閱讀 258評論 5 6
  • css3新增樣式 盒子居中position: absolute;top: 0;right: 0;bottom: 0...
    sheepmiee閱讀 104評論 0 0

友情鏈接更多精彩內(nèi)容