<output id="qn6qe"></output>

    1. <output id="qn6qe"><tt id="qn6qe"></tt></output>
    2. <strike id="qn6qe"></strike>

      亚洲 日本 欧洲 欧美 视频,日韩中文字幕有码av,一本一道av中文字幕无码,国产线播放免费人成视频播放,人妻少妇偷人无码视频,日夜啪啪一区二区三区,国产尤物精品自在拍视频首页,久热这里只有精品12

      Glide開源庫的使用

      關于Glide

      Glide是一款快速高效的Android圖像加載庫,注重于平滑的滾動。Glide提供了易用的API,高性能、可擴展的圖片解碼管道(decode pipeline),以及自動的資源池技術。

      Glide 支持拉取,解碼和展示視頻快照,圖片,和GIF動畫。

      Glide默認使用的是HttpUrlConnection類下載圖片,但是也提供了與Google Volley和Square OkHttp快速集成的工具庫。

      雖然Glide 的主要目標是讓任何形式的圖片列表的滾動盡可能地變得更快、更平滑,但實際上,Glide幾乎能滿足你對遠程圖片的拉取/縮放/顯示的一切需求。

      Android SDK 要求

      • 使用 Glide 最小SDK版本(minSdkVersion)必須是API 14 (Ice Cream Sandwich) 或更高。
      • 使用Glide 編譯SDK版本(compileSdkVersion)必須是 API 27 (Oreo MR1) 或更高版本

      Android Studio在線依賴

      Glide支持在線依賴,目前最新版本是4.8.0,在build.gradle文件中dependencies屬性下增加兩行代碼。

      dependencies {
          compile 'com.github.bumptech.glide:glide:4.8.0'
          annotationProcessor 'com.github.bumptech.glide:compiler:4.8.0'
      }
      

      權限

      Glide一般情況下需要向AndroidManifest.xml文件中添加以下四個權限:

      <uses-permission android:name="android.permission.INTERNET"/>
      <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/>
      <uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
      <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
      
      • INTERNET:訪問網絡權限,有了這個權限才能從網絡上在線加載圖片。
      • ACCESS_NETWORK_STATE:訪問網絡狀態權限,不是必須的權限,但是加上可以處理片狀網絡(flaky network) 和飛行模式。
      • READ_EXTERNAL_STORAGE:閱讀本地SD卡權限,從本地文件夾或 DCIM 或圖庫中加載圖片。
      • WRITE_EXTERNAL_STORAGE:將Glide的緩存存儲到SD卡上需要這個權限。

      簡單使用

      Glide加載圖片非常簡單,只需要一行代碼:

      Glide.with(this)
          .load("https://github.com/ansen666/images/blob/master/" +
            "public/qrcode_for_gh_14a89f21bd5e_258.jpg?raw=true")
          .into(imageView);
      

      上面這行代碼先后調用了三個方法:

      • with 傳入Activity或者Fragment實例,這里我們直接用this
      • load 圖片url
      • into 圖片加載完成之后顯示在這個控件上

      當然我們還可以取消加載,但是一般情況不需要使用,因為Glide.with()方法中傳入的Activity或者Fragment實例銷毀時,Glide 會自動取消加載并回收資源。

      后臺線程

      其實Glide是可以通過后臺線程獲取Bitmap的,在后臺線程中直接使用submit(int, int)方法。

      new Thread(runnable).start();
      
      //在后臺線程中獲取bitmap
      Runnable runnable=new Runnable() {
          @Override
          public void run() {
              FutureTarget<Bitmap> futureTarget =
                      Glide.with(MainActivity.this)
                              .asBitmap()
                              .load("https://github.com/ansen666/images/blob/master/" +
                                      "public/qrcode_for_gh_14a89f21bd5e_258.jpg?raw=true")
                              .submit();
              try {
                  Bitmap bitmap = futureTarget.get();
                  Log.i("ansen","獲取的bitmap:"+bitmap);
      
                  //當上面獲取的bitmap使用完畢時,調用clear方法釋放資源
                  Glide.with(MainActivity.this).clear(futureTarget);
              } catch (ExecutionException e) {
                  e.printStackTrace();
              } catch (InterruptedException e) {
                  e.printStackTrace();
              }
          }
      };
      

      首先新建一個線程,跟前面的加載圖片不同的是我們調用了submit方法,這個方法可以傳入一個寬高也可以不傳,同時返回FutureTarget對象,在調用get方法獲取我們需要的Bitmap,當我們獲取的bitmap使用完畢時,記得調用clear方法釋放資源。

      futureTarget.get方法會拋出異常,需要用try catch捕捉。

      當然,如果你不想開一個線程獲取Bitmap也是可以的,可以通過主線程異步獲取Bitmap方式。

      Glide.with(this)
          .asBitmap()
          .load("https://github.com/ansen666/images/blob/master/" +
                  "public/qrcode_for_gh_14a89f21bd5e_258.jpg?raw=true")
          .into(new SimpleTarget<Bitmap>() {
              @Override
              public void onResourceReady(Bitmap resource, Transition<? super Bitmap> transition) {
                  //這里我們拿到回掉回來的bitmap,可以加載到我們想使用到的地方
                  imageView.setImageBitmap(resource);
              }
          
              @Override
              public void onLoadFailed(@Nullable Drawable errorDrawable) {
                  super.onLoadFailed(errorDrawable);
                  Log.i("ansen", "圖片加載失敗");
              }
          });
      

      從上述代碼中可以看到,into方法傳入的是一個SimpleTarget對象,這個類是一個抽象類,這里我們使用內部類方式實現,重寫這個類的兩個方法(onResourceReady和onLoadFailed),onResourceReady加載圖片成功會回調,同時把Bitmap當參數返回。onLoadFailed方法加載圖片失敗回調。

      load方法傳入其他參數

      如果你以為Glide只能加載網絡圖片的話,那就不會有這么多人使用了,他還能支持Resources資源、File資源、Uri資源、字節數組等方式加載。

      Glide.with(context).load(resourceId).into(imageView);
      Glide.with(context).load(file).into(imageView);
      Glide.with(context).load(uri).into(imageView);
      Glide.with(context).load(byte[]).into(imageView);
      

      加載gif圖片

      Glide支持直接加載Gif圖片,使用也很簡單,就多調用一個asGif方法而已

      Glide.with(this).asGif().load(R.mipmap.result).into(ivGif);
      

      Generated API

      Glide v4 使用 注解處理器 (Annotation Processor) 來生成出一個 API,在 Application 模塊中可使用該流式 API 一次性調用到 RequestBuilder, RequestOptions 和集成庫中所有的選項。

      Generated API 模式的設計出于以下兩個目的:

      • 集成庫可以為 Generated API 擴展自定義選項。
      • 在 Application 模塊中可將常用的選項組打包成一個選項在 Generated API 中使用
      開始使用

      Generated API 目前僅可以在 Application 模塊內使用。這一限制可以讓我們僅持有一份 Generated API,而不是各個 Library 和 Application 中均有自己定義出來的 Generated API。

      這一做法會讓 Generated API 的調用更簡單,并確保 Application 模塊中 Generated API 調用的選項在各處行為一致。這一限制在接下來的版本中也許會被取消(以實驗性或其他的方式給出)。

      在app模塊中使用Generated API,需要兩個步驟:

      1.添加 Glide 注解處理器的依賴

      dependencies {
        annotationProcessor 'com.github.bumptech.glide:compiler:4.8.0'
      }
      

      我們文章開頭講解Android Studio在線依賴的時候就有包含這個,所以這個步驟可以忽略。

      在 Application 模塊中包含一個 AppGlideModule 的實現
      我們新建一個類,類名叫MyAppGlideModule,名字可以隨便起,但是必須要繼承自AppGlideModule,以及給類加上@GlideModule注解標記。

      import com.bumptech.glide.annotation.GlideModule;
      import com.bumptech.glide.module.AppGlideModule;
      
      /**
       * @author ansen
       * @create time 2018/10/28
       */
      @GlideModule
      public final class MyAppGlideModule extends AppGlideModule {
      }
      

      Android Studio 在大多數時候都可以正確地處理注解處理器 (annotation processor) 和 generated API。然而,當你第一次添加 AppGlideModule 時,需要重新 (rebuild) 一下項目。不然使用GlideApp類時會提示找不到這個類。

      使用Generated API

      Generated API 默認名為 GlideApp ,使用起來跟之前Glide方式一樣,只需要把Glide替換成GlideApp,例如加載在線圖片顯示,代碼如下:

      //Generated API 使用方式
      GlideApp.with(this)
          .load("https://github.com/ansen666/images/blob/master/" +
                  "public/qrcode_for_gh_14a89f21bd5e_258.jpg?raw=true")
          .into(imageView);
      

      與 Glide.with() 不同,諸如 fitCenter() 和 placeholder() 等選項在 Builder 中直接可用,并不需要再傳入單獨的 RequestOptions 對象。

      說點廢話

      今天Glide就給大家介紹到這里了,接下來我還會講解Glide占位符、動畫、Target、配置、緩存、集成Okhttp等一系列文章,希望大家持續關注,新的一個禮拜又開始了,祝大家工作愉快。

      源碼下載:

      https://github.com/ansen666/GlideTest

      如果你想第一時間看我的后期文章,掃碼關注公眾號,長期推送Android開發文章、最新動態、開源項目,讓你各種漲姿勢。

            Android開發666 - 安卓開發技術分享
                   掃描二維碼加關注
      

      Android開發666

      posted @ 2018-10-28 16:04  安輝  閱讀(5427)  評論(0)    收藏  舉報
      主站蜘蛛池模板: 会理县| 国产亚洲欧美日韩在线一区| 国产精品嫩草99av在线| 久久99精品久久久久久齐齐| 在线无码免费的毛片视频| 人妻少妇看a偷人无码| 国产精品一区在线蜜臀| 色狠狠色婷婷丁香五月| 亚洲国产中文在线有精品| 国产成人av综合色| 国产精品中文字幕在线看| 国产二区三区不卡免费| 加勒比无码人妻东京热| 亚洲色欲色欱WWW在线| 塔城市| 亚洲日本乱码熟妇色精品| 免费VA国产高清大片在线 | 性动态图无遮挡试看30秒| 久久91精品牛牛| 国产精品成人网址在线观看 | 亚洲AV永久无码嘿嘿嘿嘿| 又黄又刺激又黄又舒服| 欧美丰满熟妇hdxx| 亚洲精国产一区二区三区| 国产伦精品一区二区三区妓女下载| 蜜桃亚洲一区二区三区四| 高清自拍亚洲精品二区| 免费无码一区无码东京热| 无码人妻一区二区三区四区AV| 国产成人亚洲老熟女精品| 人人妻人人做人人爽夜欢视频 | 性色欲情网站iwww九文堂| 欧美亚洲国产一区二区三区| 91精品91久久久久久| 日韩人妻无码一区二区三区| 伊人成人在线视频免费| 欧美无人区码suv| 色偷偷久久一区二区三区| 亚洲a人片在线观看网址| A毛片终身免费观看网站| 免费人成在线视频无码|