1. 程式人生 > >Android中富文字RichText框架使用

Android中富文字RichText框架使用

詳細介紹看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);