[Android開源]:EasyImageGetter幫你實現帶網路圖片的html圖文混排!

Haoge發表於2018-09-28

平時開發中。有時候我們會遇到需要使用TextView載入html標籤的方式來做圖文混排。但是系統自帶的Html類。並沒有提供預設的img標籤解析器。而是需要自己去定義配置ImageGetter進行使用。

EasyImageGetter元件即是提供的一種輕量且簡潔的ImageGetter實現。

特性

  • 支援設定placeholde圖片載入時佔點陣圖
  • 支援設定error圖片載入失敗時的佔點陣圖
  • 支援指定uri進行載入。不僅僅侷限於網路圖片。還包括載入本地圖片、assets圖片等。
  • 支援自定義載入器:滿足各種載入需求。

用法

提供帶img標籤的文字資料

首先需要提供一個可用的帶img標籤的文字:img標籤中的地址。為通用的uri地址,比如:

private val html =
"""
<h5>asset圖片載入示例</h5>
<img src="file:///android_asset/imagegetter/cat.png">
<h5>http圖片載入示例</h5>
<img src="http://www.w3school.com.cn/i/eg_tulip.jpg">
""".trimIndent()
複製程式碼

可以看到。asset圖片與網路圖片均完美支援。當然如果需要。此處也可以配置本地圖片進行展示

建立例項並進行展示:

EasyImageGetter.create().loadHtml(html, textView)
複製程式碼

載入效果圖

[Android開源]:EasyImageGetter幫你實現帶網路圖片的html圖文混排!

配置佔點陣圖

元件支援兩種佔點陣圖:

EasyImageGetter.create()
    .setPlaceHolder(R.drawable.placeholder)// 設定在進行圖片載入時的佔點陣圖
    .setError(R.drawable.error)// 設定在進行圖片載入失敗時的佔點陣圖
    .loadHtml(html, textView)
複製程式碼

配置額外載入器

在上面的基礎用法示例中。img標籤中的src支援任意的uri進行展示。而內部載入器是使用的Glide(compileOnly方式依賴)

但是有時候我們可能會需要定製自己的載入器去進行圖片解析。比如專案不支援Glide。或者src中的資料格式不為規則的uri時。

這個時候就可以使用額外載入器去進行自主圖片解析了:

val imageGetter = EasyImageGetter.create()
imageGetter.setLoader { src -> // src為img標籤中的原始src屬性值
    // 此載入器回撥執行於子執行緒中。所以可以在此直接進行圖片解析操作。

    // 通過src資料進行自主drawable解析載入。並返回載入的drawable資料
    val drawable = parseFromSrc(src)
    // 若返回的drawable為null。表示需要使用內建載入器繼續進行drawable解析。
    return drawable
}
複製程式碼

日誌定位

有時候會出現載入失敗的情況。這時候可以通過元件提供的關鍵字EasyImageGetter去進行日誌過濾。便於進行問題定位

開源地址

EasyImageGetter是開源基礎元件整合庫EasyAndroid中的基礎元件之一。

EasyAndroid作為一款整合元件庫,此庫中所整合的元件,均包含以下特點,你可以放心使用~~

1. 設計獨立

元件間獨立存在,不相互依賴,且若只需要整合庫中的部分元件。也可以很方便的只copy對應的元件檔案進行使用

2. 設計輕巧

因為是元件整合庫,所以要求每個元件的設計儘量精練、輕巧。避免因為一個小功能而引入大量無用程式碼.

每個元件的方法數均不超過100. 大部分元件甚至不超過50

得益於編碼時的高內聚性,若你只需要使用EasyImageGetter. 那麼可以直接去拷貝EasyImageGetter原始碼檔案到你的專案中,直接進行使用,也是沒問題的。

EasyAndroid開源庫地址:

github.com/yjfnypeu/Ea…

EasyImageGetter元件地址:

github.com/yjfnypeu/Ea…

相關文章