Android中富文字RichText框架使用
阿新 • • 發佈:2019-01-03
詳細介紹看GitHub:https://github.com/zzhoujay/RichText
注意
在第一次呼叫RichText之前先呼叫RichText.initCacheDir()
方法設定快取目錄
ImageFixCallback的回撥方法不一定是在主執行緒回撥,注意不要進行UI操作
本地圖片由根路徑\
開頭,Assets目錄圖片由file:///android_asset/
開頭
Gif圖片播放不支援硬體加速,若要使用Gif圖片請先關閉TextView的硬體加速
textView.setLayerType(View.LAYER_TYPE_SOFTWARE, null);
第一步:填加依賴。
implementation 'com.zzhoujay.richtext:richtext:2.5.1'
第二步:使用方式。
1.基本使用
RichText.from(text).into(textView);
2.設定資料來源型別
2.1 直接設定
// 設定為Html RichText.fromHtml(text).into(textView); // 設定為Markdown RichText.fromMarkdown(text).into(textView);
2.2 使用type方法設定
RichText.from(text).type(RichText.TYPE_MARKDOWN).into(textView);
3.高階使用
RichText .from(text) // 資料來源 .type(RichText.TYPE_MARKDOWN) // 資料格式,不設定預設是Html,使用fromMarkdown的預設是Markdown格式 .autoFix(true) // 是否自動修復,預設true .autoPlay(true) // gif圖片是否自動播放 .showBorder(true) // 是否顯示圖片邊框 .borderColor(Color.RED) // 圖片邊框顏色 .borderSize(10) // 邊框尺寸 .borderRadius(50) // 圖片邊框圓角弧度 .scaleType(ImageHolder.ScaleType.FIT_CENTER) // 圖片縮放方式 .size(ImageHolder.MATCH_PARENT, ImageHolder.WRAP_CONTENT) // 圖片佔位區域的寬高 .fix(imageFixCallback) // 設定自定義修復圖片寬高 .fixLink(linkFixCallback) // 設定連結自定義回撥 .noImage(true) // 不顯示並且不載入圖片 .resetSize(false) // 預設false,是否忽略img標籤中的寬高尺寸(只在img標籤中存在寬高時才有效),true:忽略標籤中的尺寸並觸發SIZE_READY回撥,false:使用img標籤中的寬高尺寸,不觸發SIZE_READY回撥 .clickable(true) // 是否可點選,預設只有設定了點選監聽才可點選 .imageClick(onImageClickListener) // 設定圖片點選回撥 .imageLongClick(onImageLongClickListener) // 設定圖片長按回調 .urlClick(onURLClickListener) // 設定連結點選回撥 .urlLongClick(onUrlLongClickListener) // 設定連結長按回調 .placeHolder(placeHolder) // 設定載入中顯示的佔位圖 .error(errorImage) // 設定載入失敗的錯誤圖 .cache(Cache.ALL) // 快取型別,預設為Cache.ALL(快取圖片和圖片大小資訊和文字樣式資訊) .imageGetter(yourImageGetter) // 設定圖片載入器,預設為DefaultImageGetter,使用okhttp實現 .imageDownloader(yourImageDownloader) // 設定DefaultImageGetter的圖片下載器 .bind(tag) // 繫結richText物件到某個object上,方便後面的清理 .done(callback) // 解析完成回撥 .into(textView); // 設定目標TextView
第三步:釋放資源。
必要時可呼叫RichText物件的clear方法釋放資源,但很多情況不需要這樣做,只需要在應用退出時呼叫RichText.recycle()
// 載入富文字
RichText.from(text).bind(activity).into(textView);
// activity onDestory時
RichText.clear(activity);