除了webview和Text.fromHtml(感覺性能不行),現在主流新聞類app使用的是什麼途徑實現


正好前幾天公司業務有需求需要做圖文混排控制項(需要附帶編輯功能)

一開始使用WordPress的編輯器(它其實也是由WebView實現的,邏輯在一大堆JS中),最終發現這種方案對於實現富文本編輯非常方便,但是如果要添加其他功能,則需要前端參與開發,並且效果還不是很好(能力有限,無法優化到極致)。還遇到的問題就是部分機型對WebView的實現由差異,最後效果也有點差別

最後分析了一下需求,並不需要支持富文本,只需要支持圖文混排即可,於是就用EditText + ScrollView + Fresco實現了一個簡單的圖文混排編輯器,主要邏輯就在插入圖片時對EditText的分割

另外這種方案也可以實現簡單的富文本需求,主要就是對spanned對象的操作

由於是完全native寫,所以很多需求做起來比較容易,比如圖片載入動畫,點擊圖片出現dialog進行相應操作,圖片位置以及大小等。

最後發現一個問題,由於貪省事用了ScrollView,在部分機型(比如MIUI,堆內存只給128MB)容易出現OOM,下回有空了改成RecyclerView性能會更好

另外,大部分github上的富文本編輯器都採用了WebView的實現方式,附上一個非WebView實現的 mthli/Knife (缺陷是不能插入圖片。。。)


負責堆糖安卓app的文章編寫功能的開發,經歷了此功能從前期調研,到開發再到功能上線。想體驗功能的可以下載堆糖android版本進行體驗。說一下技術方案最開始想通過原生實現,後來發現靈活性和開發難度都不友好,比如我想在文章中加入一個新的文字樣式,就需要發版本。通過反編譯微博和簡書還有知乎,發現都是webview+js實現,既然成熟方案都是這樣,我們也就採用這種方式。

談一下具體細節

寫文章的大部分功能都是js實現,比如字體變換,圖片插入,換行等。但是基礎功能都是原生實現,比如多圖片上傳,草稿保存,介面處理。最主要的是jssdk的應用,他是js與原生交流的橋樑,比如,用戶選擇一張圖片之後,你需要把圖片uri通過jssdk傳給js顯示到html裡面,比如js通過jssdk把html傳給原生做暫時保存草稿。關於jssdk,可以去看一下github項目jsbridge等。最後說一下中間踩過的坑1.webview兼容性問題,主要是由於安卓系統迭代造成webview在不同版本中表現不一致。還有的系統用戶會安裝chrome作為系統默認webview,這個帶來的後果就是有部分效果顯示不一致。

2. loadurl的方法會導致鍵盤自動落下,這個特性讓我花了一頓飯的功夫才找出來。

3.解決js的跨域問題,如果直接讀取線上js是無法訪問本地資源的。

知乎,網易新聞,簡書都是用的webview


看頁面複雜程度和開發能力吧,最簡單的還是用WebView,第二種方案是TextView用Spanner實現,但不能復用內存,第三種方案是用ListView之類的實現,但佈局受限,第四種方案就是用view自己畫,但難度很高。


學習了~


剛給某報紙集團做完一個移動採編的相關的項目。調研了移動手機上富文本編輯的可行方案。現在Webview實現方式是最靠譜的,坑也是最少的,你就忽略那一點體驗上不爽把


我之前是解析文本字元串的,另外也有一個圖片數組,字元串中遇到{img} 就取一張圖片顯示
如果你要通用型的最好還是WebView,如果規則比較清晰的可以自定義view
據我所知,多數是webview,性能上可以做優化的手段還蠻多的,不過重點還是在伺服器上做加速,比如更快的 CDN
github上不是有很多開源的富文本view麼,不滿意自己寫一個啊
推薦閱讀:
相關文章