<ruby id="bdb3f"></ruby>

    <p id="bdb3f"><cite id="bdb3f"></cite></p>

      <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
        <p id="bdb3f"><cite id="bdb3f"></cite></p>

          <pre id="bdb3f"></pre>
          <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

          <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
          <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

          <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                <ruby id="bdb3f"></ruby>

                ??碼云GVP開源項目 12k star Uniapp+ElementUI 功能強大 支持多語言、二開方便! 廣告
                上周,我們已經看了你如何為你的 Glide 加載圖片而設置各種網絡棧。在內部,為網絡棧的 集成庫 甚至都不需要做其他的聲明,比如一個 `GlideModule`,它明顯的定制了一個 Glide 的行為。這篇博客中,我們會給你一個 `GlideModule` 的概述。 **Glide Modules?** Glide module 是一個抽象方法,全局改變 Glide 行為的一個方式。如果你需要訪問 `GlideBuilder`,它要在你要做的地方創建 Glide 實例,這是要做的一種方法。為了定制 Glide,你需要去實現一個 [GlideModule](http://bumptech.github.io/glide/javadocs/latest/com/bumptech/glide/module/GlideModule.html) 接口的公共類。 ~~~ public class SimpleGlideModule implements GlideModule { @Override public void applyOptions(Context context, GlideBuilder builder) { // todo } @Override public void registerComponents(Context context, Glide glide) { // todo } } ~~~ 該接口提供了兩種發發來調整 Glide 不同的組件。在這篇博客中,我們主要看第一個方法 `applyOptions(Context context, GlideBuilder builder)`。 所以你知道要創建一個額外的類去定制 Glide。下一步是要全局的去聲明這個類,讓 Glide 知道它應該在哪里被加載和使用。Glide 會掃描` AndroidManifest.xml` 為 Glide module 的 meta 聲明。因此,你必須在 `AndroidManifest.xml` 的 `<application> `標簽內去聲明這個剛剛創建的 Glide module。 ~~~ <manifest ... <application> <meta-data android:name="io.futurestud.tutorials.glide.glidemodule.SimpleGlideModule" android:value="GlideModule" /> ... </application> </manifest> ~~~ 請確保你將 `android:name` 屬性改成你的包名+類名的形式,這樣的引用才是正確的。就這樣,你不需要去添加其他任何代碼。如果你想刪掉 Glide Module,只需要把它從 `AndroidManifest.xml` 中移除就可以了。Java 類可以保存,說不定以后會用呢。如果它沒有在 `AndroidManifest.xml` 中被引用,那它不會被加載或被使用。 你去定制 module 的話 Glide 會有這樣一個優點:你可以同時聲明多個 Glide module。Glide 將會(沒有特定順序)得到所有的聲明 module。因為你當前不能定義順序,請確保定制不會引起沖突! **GlideBuilder**? 好了,你知道如何用 Glide module 定制 Glide 了。現在來看看接口的第一個方法:`applyOptions(Context context, GlideBuilder builder)`。該方法給你了一個 `GlideBuilder` 對象作為變量。這個方法是一個 `void` 的返回類型,所以你可以在這個方法里去調 `GlideBuilder` 中可用的方法。 * `.setMemoryCache(MemoryCache memoryCache)` * `.setBitmapPool(BitmapPool bitmapPool)` * `.setDiskCache(DiskCache.Factory diskCacheFactory)` * `.setDiskCacheService(ExecutorService service)` * `.setResizeService(ExecutorService service)` * `.setDecodeFormat(DecodeFormat decodeFormat)` 你可以看到,這個` GlideBuilder` 對象給你訪問了 Glide 重要的核心組件。在這個博客中使用的方法,你可以改變磁盤緩存,內存緩存等等! 我們稍后會看到更多進階的組件,但是現在我們先挑一個相對加單的改變:`.setDecodeFormat(DecodeFormat decodeFormat)。` **使用實例:增加 Glide 的圖片質量**? 在 Android 中有兩個主要的方法對圖片進行解碼:ARGB8888 和 RGB565。前者為每個像素使用了 4 個字節,后者僅為每個像素使用了 2 個字節。ARGB8888 的優勢是圖像質量更高以及能存儲一個 alpha 通道。[Picasso](https://futurestud.io/blog/tag/picasso) 使用 ARGB8888,Glide 默認使用低質量的 RGB565。對于 Glide 使用者來說:你使用 Glide module 方法去改變解碼規則。 你只需要實現一個 `GlideModule`,像我們上面給你顯示的那樣,然后使用正確的枚舉值調用 `builder.setDecodeFormat(DecodeFormat.PREFER_ARGB_8888)`。 ~~~ public class SimpleGlideModule implements GlideModule { @Override public void applyOptions(Context context, GlideBuilder builder) { builder.setDecodeFormat(DecodeFormat.PREFER_ARGB_8888); } @Override public void registerComponents(Context context, Glide glide) { // nothing to do here } } ~~~ 如果你是正確的按照我們的步驟來的話,Glide 現在回用更高質量的圖片解碼。這種改變方式也遵循 Glide 的行為,適用于其他的模式。代碼在 `registerComponents()` 會看起來有一點不同,我們很快會看到的。 **Summary**? 這篇博客中,你已經學會了 Glide module 的基礎。你應該能感覺到他們是有用的,以及你知道怎么實現它們了。如果你仍然需要更多的信息,看看下面的資源鏈接。特別是如果你需要更多明確的在項目庫中如何去使用 Glide module 以及使用 ProGuard,避免混淆的情況,請去看看這些內容。 因為這是一個相當復雜的話題,我們將在下周通過一個實際的例子去實踐:如何用一個` GlideModule` 的 `registerComponents() `方法去從服務端使用 self-signed HTTPS 認證(這不是默認實現的)的方式去接收圖片。 資源? [GlideModules on Glide’s Github](https://github.com/bumptech/glide/wiki/Configuration)
                  <ruby id="bdb3f"></ruby>

                  <p id="bdb3f"><cite id="bdb3f"></cite></p>

                    <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
                      <p id="bdb3f"><cite id="bdb3f"></cite></p>

                        <pre id="bdb3f"></pre>
                        <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

                        <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
                        <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

                        <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                              <ruby id="bdb3f"></ruby>

                              哎呀哎呀视频在线观看