從 SuperTextView 誕生之初募判,便始終堅持一個愿景,即幫助 Android 開發(fā)者愉悅的去構(gòu)建一個應用咒唆。
經(jīng)過一年多的不斷的聆聽届垫、思考、探索钧排、驗證敦腔, SuperTextView 完成了多次迭代,改善了一些問題恨溜,新增了一些功能,不斷的完善找前,以帶給開發(fā)者更好的開發(fā)體驗糟袁。
如今, SuperTextView 已經(jīng)具備了諸如圓角躺盛、邊框项戴、描邊、按壓變色槽惫、多狀態(tài)圖周叮、圓角圖、萬能的 Adjuster 界斜、加載網(wǎng)絡圖片等一系列的常用功能仿耽。得益于此,開發(fā)者能夠輕松實現(xiàn)各種原本十分麻煩的效果各薇,節(jié)省大量的開發(fā)時間项贺,有效減少頁面的復雜度,降低項目維護成本峭判。
寫代碼开缎,本應如此愉悅!
1. 鏈接云端的SuperTextView
早在幾個月前林螃,就開始有很多開發(fā)者向 CoorChice 建議奕删,是否能夠讓 SuperTextView 具備加載網(wǎng)絡圖片的功能。其實這也是 CoorChice 很久之前就有考慮過的疗认,但在 SuperTextView 的早期完残,完善其核心功能仍然是首要目標伏钠,所以一直沒涉獵到圖片相關(guān)的功能。
直到上一個大版本坏怪,SuperTextView v2.0贝润,CoorChie 才嘗試添加了圖片展示的功能。這使得SuperTextView 可使用的范圍得到了擴大铝宵,同時針對圖片也推出了給圖片增加描邊打掘、設(shè)置圓角、設(shè)置狀態(tài)圖等功能鹏秋。相關(guān)使用文檔可到以下鏈接查閱:
【你好尊蚁, SuperTextView】 - http://www.reibang.com/p/1b91e11e441d
這一次嘗試,獲得了開發(fā)者們不錯的反響侣夷,大家對于使用 SuperTextView 去展示處理圖片是有所期待的横朋。上一個版本發(fā)布后,開發(fā)者們對于一個能展示網(wǎng)絡圖片的 SuperTextView 似乎更加的感興趣了百拓。
那么琴锭,現(xiàn)在,你所期待已久的 SuperTextView 在此衙传!
1.1 加載一張網(wǎng)絡圖片
顯示一張網(wǎng)絡圖片决帖,在 SuperTextView 中只需要如下代碼:
SuperTextView stv_1 = (SuperTextView) findViewById(R.id.stv_1);
//填入圖片Url
stv_1.setUrlImage(url);
效果就如上圖中的第二個顯示頭像的例子一樣。
如果你希望將網(wǎng)絡圖片作為 SuperTextView 的 StateDrawable 來展示的話蓖捶,完全沒問題地回。
//填入圖片Url
stv_1.setUrlImage(url, false);
第二個參數(shù)為 false 表示網(wǎng)絡圖片將不會被作為背景充滿整個 SuperTextView,而是作為一個狀態(tài)圖俊鱼。當然刻像,有關(guān)狀態(tài)圖的一切配置都將運用到此。就像上圖中的第一個例子一樣并闲,整個布局包括圖片细睡、文字、背景都在一個 SuperTextView 中被處理焙蚓,從網(wǎng)絡下載的圖片被作為 StateDrawable 放到了圖中的位置纹冤。
1.2 SuperTextView中圖片引擎
SuperTextView 為了保持依賴庫的純凈和盡可能小的體積,并沒有內(nèi)置任何的圖片加載框架购公。所以默認情況萌京,將使用內(nèi)置的一個簡易圖片引擎去下載圖片,確保開發(fā)者能夠正常使用展示網(wǎng)絡圖片的功能宏浩。
但 CoorChice 仍然建議開發(fā)者根據(jù)項目的具體情況知残,選擇一個目前正在使用的圖片加載框架,設(shè)置到 SuperTextView 中比庄,以用來加載圖片求妹。 SuperTextView 具備適配任意圖片加載框架的能力乏盐。下面 CoorChice 將通過 Glide 和 Picasso 的例子展示如何將現(xiàn)有的圖片框架安裝到 SuperTextView 中。
1.2.1 實現(xiàn)圖片引擎Engine
在 SuperTextView 中制恍,核心的圖片加載引擎被抽象成接口 Engine 父能,開發(fā)者需要根據(jù)所用的圖片框架,實現(xiàn)一個 Engine净神。
- Glide圖片加載框架
public class GlideEngine implements Engine {
private Context context;
public GlideEngine(Context context) {
this.context = context;
}
@Override
public void load(String url, final ImageEngine.Callback callback) {
Glide.with(context).load(url).into(new SimpleTarget<GlideDrawable>() {
@Override
public void onResourceReady(GlideDrawable resource, GlideAnimation<? super GlideDrawable> glideAnimation) {
// 主要是通過callback返回Drawable對象給SuperTextView
callback.onCompleted(resource);
}
});
}
}
- Picasso圖片加載框架
public class PicassoEngine implements Engine {
private Context context;
public PicassoEngine(Context context) {
this.context = context;
}
@Override
public void load(String url, final ImageEngine.Callback callback) {
Picasso.with(context).load(url).into(new Target() {
@Override
public void onBitmapLoaded(Bitmap bitmap, Picasso.LoadedFrom from) {
// 主要是通過callback返回Drawable對象給SuperTextView
callback.onCompleted(new BitmapDrawable(Resources.getSystem(), bitmap));
}
@Override
public void onBitmapFailed(Drawable errorDrawable) {
}
@Override
public void onPrepareLoad(Drawable placeHolderDrawable) {
}
});
}
}
1.2.2 安裝圖片引擎Engine
實現(xiàn)好 Engine 后何吝,下一步就是要將其安裝到 SuperTextView 中。
CoorChice 建議可以在 Application的onCreate()
中進行安裝鹃唯,這樣當需要使用 SuperTextView 加載顯示網(wǎng)絡圖片的時候爱榕,就能夠用到三方圖片框架了。
public class STVApplication extends Application {
@Override
public void onCreate() {
super.onCreate();
// 安裝圖片引擎
ImageEngine.install(new GlideEngine(this));
// ImageEngine.install(new PicassoEngine(this));
}
}
一行代碼坡慌,輕松安裝黔酥。
需要注意的是,任何時候洪橘,后安裝的 Engine 實例總是會替換掉先前安裝的 Engine 實例跪者,即 SuperTextView 只允許全局存在一個 Engine 實例。
現(xiàn)在熄求,你可以讓 SuperTextView 使用指定的三方圖片加載框架去加載圖片了坑夯。
2. 如何開始SuperTextView v3.0
dependencies {
compile 'com.github.chenBingX:SuperTextView:v3.0.0'
}
點擊這里跳轉(zhuǎn)SuperTextView項目地址。https://github.com/chenBingX/SuperTextView
3. 寫在最后
- 如果你喜歡SuperTextView抡四,希望能順手到 Github 點個star以示鼓勵哦!
- 抽出空余時間寫文章分享需要動力仗谆,還請各位看官動動小手點個贊指巡,CoorChice謝謝各位老鐵啊??
- CoorChice一直在不定期的創(chuàng)作新的干貨,想要上車只需進到CoorChice的【簡書 - 個人主頁】點個關(guān)注就好了哦隶垮。發(fā)車嘍~
點擊這里跳轉(zhuǎn)SuperTextView項目地址藻雪。https://github.com/chenBingX/SuperTextView