抱歉,這是你期待已久的SuperTextView(v3.0)

image

Insight.io

SuperTextView

SuperTextView 誕生之初,便始終堅持一個願景,即幫助 Android 開發者愉悅的去構建一個應用。git

通過一年多的不斷的聆聽、思考、探索、驗證, SuperTextView 完成了屢次迭代,改善了一些問題,新增了一些功能,不斷的完善,以帶給開發者更好的開發體驗。github

現在, SuperTextView 已經具有了諸如圓角、邊框、描邊、按壓變色、多狀態圖、圓角圖、萬能的 Adjuster 、加載網絡圖片等一系列的經常使用功能。得益於此,開發者可以輕鬆實現各類本來十分麻煩的效果,節省大量的開發時間,有效減小頁面的複雜度,下降項目維護成本。bash

寫代碼,本應如此愉悅!網絡

1. 連接雲端的SuperTextView

早在幾個月前,就開始有不少開發者向 CoorChice 建議,是否可以讓 SuperTextView 具有加載網絡圖片的功能。其實這也是 CoorChice 好久以前就有考慮過的,但在 SuperTextView 的早期,完善其核心功能仍然是首要目標,因此一直沒涉獵到圖片相關的功能。框架

直到上一個大版本,SuperTextView v2.0CoorChie 才嘗試添加了圖片展現的功能。這使得SuperTextView 可以使用的範圍獲得了擴大,同時針對圖片也推出了給圖片增長描邊、設置圓角、設置狀態圖等功能。相關使用文檔可到如下連接查閱:ide

【你好, SuperTextView】 - https://www.jianshu.com/p/1b91e11e441dsvg

這一次嘗試,得到了開發者們不錯的反響,你們對於使用 SuperTextView 去展現處理圖片是有所期待的。上一個版本發佈後,開發者們對於一個能展現網絡圖片的 SuperTextView 彷佛更加的感興趣了。佈局

那麼,如今,你所期待已久的 SuperTextView 在此!this

1.1 加載一張網絡圖片

顯示一張網絡圖片,在 SuperTextView 中只須要以下代碼:url

SuperTextView stv_1 = (SuperTextView) findViewById(R.id.stv_1);
//填入圖片Url
stv_1.setUrlImage(url);
複製代碼

效果就如上圖中的第二個顯示頭像的例子同樣。

若是你但願將網絡圖片做爲 SuperTextView 的 StateDrawable 來展現的話,徹底沒問題。

//填入圖片Url
stv_1.setUrlImage(url, false);
複製代碼

第二個參數爲 false 表示網絡圖片將不會被做爲背景充滿整個 SuperTextView,而是做爲一個狀態圖。固然,有關狀態圖的一切配置都將運用到此。就像上圖中的第一個例子同樣,整個佈局包括圖片、文字、背景都在一個 SuperTextView 中被處理,從網絡下載的圖片被做爲 StateDrawable 放到了圖中的位置。

1.2 SuperTextView中圖片引擎

SuperTextView 爲了保持依賴庫的純淨和儘量小的體積,並無內置任何的圖片加載框架。因此默認狀況,將使用內置的一個簡易圖片引擎去下載圖片,確保開發者可以正常使用展現網絡圖片的功能。

CoorChice 仍然建議開發者根據項目的具體狀況,選擇一個目前正在使用的圖片加載框架,設置到 SuperTextView 中,以用來加載圖片。 SuperTextView 具有適配任意圖片加載框架的能力。下面 CoorChice 將經過 Glide 和 Picasso 的例子展現如何將現有的圖片框架安裝到 SuperTextView 中。

1.2.1 實現圖片引擎Engine

SuperTextView 中,核心的圖片加載引擎被抽象成接口 Engine ,開發者須要根據所用的圖片框架,實現一個 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

實現好 Engine 後,下一步就是要將其安裝到 SuperTextView 中。

CoorChice 建議能夠在 Application的onCreate()中進行安裝,這樣當須要使用 SuperTextView 加載顯示網絡圖片的時候,就可以用到三方圖片框架了。

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 實例。

如今,你可讓 SuperTextView 使用指定的三方圖片加載框架去加載圖片了。

2. 如何開始SuperTextView v3.0

dependencies {
	   compile 'com.github.chenBingX:SuperTextView:v3.0.0'
	}
複製代碼

點擊這裏跳轉SuperTextView項目地址。https://github.com/chenBingX/SuperTextView

3. 寫在最後

  • 若是你喜歡SuperTextView,但願能順手到 Github 點個star以示鼓勵哦!
  • 抽出空餘時間寫文章分享須要動力,還請各位看官動動小手點個贊,CoorChice謝謝各位老鐵啊😄
  • CoorChice一直在不按期的創做新的乾貨,想要上車只需進到CoorChice的【我的主頁】點個關注就行了哦。發車嘍~

點擊這裏跳轉SuperTextView項目地址。https://github.com/chenBingX/SuperTextView

SuperTextView 歷史文檔】:https://www.jianshu.com/p/1b91e11e441d

相關文章
相關標籤/搜索