平時開發中。有時候我們會遇到需要使用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)
複製程式碼
載入效果圖
配置佔點陣圖
元件支援兩種佔點陣圖:
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開源庫地址:
EasyImageGetter元件地址: