Android端富文本編輯和顯示

最近項目中有個富文本編輯的需求,需要能編輯文字字號矫付、顏色,插入圖片等幅恋,最后要轉(zhuǎn)成html格式然后base64轉(zhuǎn)碼后上傳服務(wù)端炭庙,這樣看來還挺復雜的饲窿。

想想像富文本這樣的功能應(yīng)該有人實現(xiàn)過了煌寇,順手Google了下焕蹄,明確一下思路。

主要是兩種方法

  1. EditText + Span 的實現(xiàn)方式
  2. WebView + JavaScript 的實現(xiàn)方式

去GitHub搜了下阀溶,貌似已經(jīng)有人實現(xiàn)了這個功能
wasabeef/richeditor-android
這個庫是用第二種方式實現(xiàn)的腻脏,通過insertImage(url)可以直接插入圖片,getHtml()即可得到html的字符串银锻,然后用base64轉(zhuǎn)碼即可永品。
試用了幾天,bug還是有一些击纬,最大的問題是顯示圖片沒有適配屏幕寬度鼎姐,顯示圖片的時候是按原圖大小顯示的,拖了幾下我就暈頭轉(zhuǎn)向了更振,另外還有諸如離開界面鍵盤未收起炕桨,窗口泄漏等問題(leaked window)】贤螅總之用得不是很順暢献宫,只能尋找替代品了。

繼續(xù)搜索
mr5/icarus-android
這個庫也是用第二種方式實現(xiàn)的实撒,看了一點源碼被繞得暈頭轉(zhuǎn)向姊途,不過總算有點收獲涉瘾。
icarus.insertHtml("<img src=\\"xxx\\" />");插入圖片標簽,實際上可以插入任何標簽捷兰。
icarus.getContent()得到html格式的字符串立叛。實際上得到的是一串Json字符串,解析一下即可寂殉。

這個Demo里面點擊圖片默認插入的是一張默認圖囚巴,看源碼發(fā)現(xiàn)是調(diào)用TextViewButtoncommand()方法,然后再調(diào)用JS代碼實現(xiàn)的友扰。如果要自己實現(xiàn)點擊圖片的邏輯彤叉,比如圖庫選圖和拍照等,就需要定義一個子類繼承TextViewButton村怪,重寫command()方法實現(xiàn)自己的邏輯秽浇。

總體來說這個庫用得還算順暢,我的需求都實現(xiàn)了甚负,可以插入圖片柬焕,編輯字體,最后可以得到html格式的片段梭域。
只有一個問題還待解決斑举,就是和上一個庫一樣的窗口泄漏問題。
20161215更新
窗口泄漏已解決病涨,調(diào)用Webview.destroy()即可

以上都是用WebView實現(xiàn)的方法
接下來會嘗試下用EditText + Span 實現(xiàn)

富文本的圖片上傳策略問題

原先需求的想法是先在編輯器里顯示本地圖片富玷,等待用戶編輯完成再上傳全部圖片,然后用上傳返回的url替換之前html中顯示本地圖片的位置既穆。
這樣的問題是赎懦,如果圖片很多,上傳的數(shù)據(jù)量會很大幻工,手機的網(wǎng)絡(luò)狀態(tài)經(jīng)常不穩(wěn)定励两,很容易上傳失敗。另外等待時間會很長囊颅,體驗很差当悔。

另一種策略是選圖完成即上傳,得到url之后直接插入踢代,上傳是耗時操作盲憎,再加上圖片壓縮的時間,這樣編輯器顯示圖片會有可觀的延遲時間奸鬓,實際項目中可以加一個loading占位圖焙畔,另外加一個標記提醒用戶是否上傳完成,避免沒有上傳成功用戶即提交的問題串远。
感謝上述開源庫作者mr5的指教

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末宏多,一起剝皮案震驚了整個濱河市儿惫,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌伸但,老刑警劉巖肾请,帶你破解...
    沈念sama閱讀 222,807評論 6 518
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異更胖,居然都是意外死亡铛铁,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 95,284評論 3 399
  • 文/潘曉璐 我一進店門却妨,熙熙樓的掌柜王于貴愁眉苦臉地迎上來饵逐,“玉大人,你說我怎么就攤上這事彪标”度ǎ” “怎么了?”我有些...
    開封第一講書人閱讀 169,589評論 0 363
  • 文/不壞的土叔 我叫張陵捞烟,是天一觀的道長薄声。 經(jīng)常有香客問我,道長题画,這世上最難降的妖魔是什么默辨? 我笑而不...
    開封第一講書人閱讀 60,188評論 1 300
  • 正文 為了忘掉前任,我火速辦了婚禮苍息,結(jié)果婚禮上缩幸,老公的妹妹穿的比我還像新娘。我一直安慰自己档叔,他們只是感情好桌粉,可當我...
    茶點故事閱讀 69,185評論 6 398
  • 文/花漫 我一把揭開白布蒸绩。 她就那樣靜靜地躺著衙四,像睡著了一般。 火紅的嫁衣襯著肌膚如雪患亿。 梳的紋絲不亂的頭發(fā)上传蹈,一...
    開封第一講書人閱讀 52,785評論 1 314
  • 那天,我揣著相機與錄音步藕,去河邊找鬼惦界。 笑死,一個胖子當著我的面吹牛咙冗,可吹牛的內(nèi)容都是我干的沾歪。 我是一名探鬼主播,決...
    沈念sama閱讀 41,220評論 3 423
  • 文/蒼蘭香墨 我猛地睜開眼雾消,長吁一口氣:“原來是場噩夢啊……” “哼灾搏!你這毒婦竟也來了挫望?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 40,167評論 0 277
  • 序言:老撾萬榮一對情侶失蹤狂窑,失蹤者是張志新(化名)和其女友劉穎媳板,沒想到半個月后,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體泉哈,經(jīng)...
    沈念sama閱讀 46,698評論 1 320
  • 正文 獨居荒郊野嶺守林人離奇死亡蛉幸,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 38,767評論 3 343
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了丛晦。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片奕纫。...
    茶點故事閱讀 40,912評論 1 353
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖烫沙,靈堂內(nèi)的尸體忽然破棺而出若锁,到底是詐尸還是另有隱情,我是刑警寧澤斧吐,帶...
    沈念sama閱讀 36,572評論 5 351
  • 正文 年R本政府宣布又固,位于F島的核電站,受9級特大地震影響煤率,放射性物質(zhì)發(fā)生泄漏仰冠。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 42,254評論 3 336
  • 文/蒙蒙 一蝶糯、第九天 我趴在偏房一處隱蔽的房頂上張望洋只。 院中可真熱鬧,春花似錦昼捍、人聲如沸识虚。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,746評論 0 25
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽担锤。三九已至,卻和暖如春乍钻,著一層夾襖步出監(jiān)牢的瞬間肛循,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 33,859評論 1 274
  • 我被黑心中介騙來泰國打工银择, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留多糠,地道東北人。 一個月前我還...
    沈念sama閱讀 49,359評論 3 379
  • 正文 我出身青樓浩考,卻偏偏與公主長得像夹孔,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 45,922評論 2 361

推薦閱讀更多精彩內(nèi)容

  • Android 自定義View的各種姿勢1 Activity的顯示之ViewRootImpl詳解 Activity...
    passiontim閱讀 172,332評論 25 707
  • 發(fā)現(xiàn) 關(guān)注 消息 iOS 第三方庫搭伤、插件害捕、知名博客總結(jié) 作者大灰狼的小綿羊哥哥關(guān)注 2017.06.26 09:4...
    肇東周閱讀 12,124評論 4 61
  • 我停住心跳 也停住了心痛 就這樣在你眼前走過 好像一切都平常 只是,從此是空心日子 一樣的微笑和大笑 不一樣的設(shè)防...
    云妮yunni閱讀 291評論 8 6
  • 很多時候闷畸,前行的腳步已不再匆匆尝盼,只喜歡歲月里有著暖暖的安恬。其實佑菩,似水流年盾沫,有太多的美好遺失在匆匆里,有太多的遺憾...
    立來閱讀 224評論 0 0
  • 昨日參加公司新入職應(yīng)屆生座談會蕾哟,得知又有兩人遞交辭職報告,其中一人莲蜘,還是大家都很看好的培養(yǎng)對象谭确。心情瞬間低落又嘆息...
    陳曉汐閱讀 350評論 0 1