亚洲激情专区-91九色丨porny丨老师-久久久久久久女国产乱让韩-国产精品午夜小视频观看

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

Android中有哪些常用的圖片加載庫

發布時間:2020-12-02 15:54:11 來源:億速云 閱讀:212 作者:Leah 欄目:移動開發

Android中有哪些常用的圖片加載庫?相信很多沒有經驗的人對此束手無策,為此本文總結了問題出現的原因和解決方法,通過這篇文章希望你能解決這個問題。

Universal Image Loader:ImageLoader是比較老的框架,一個強大的圖片加載庫,包含各種各樣的配置,最老牌,使用也最廣泛。

ImageLoader開源庫存哪些特征:

1.多線程下載圖片,圖片可以來源于網絡,文件系統,項目文件夾assets中以及drawable中等

2.支持隨意的配置ImageLoader,例如線程池,圖片下載器,內存緩存策略,硬盤緩存策略,圖片顯示選項以及其他的一些配置

3.支持圖片的內存緩存,文件系統緩存或者SD卡緩存

4.支持圖片下載過程的監聽

5.根據控件(ImageView)的大小對Bitmap進行裁剪,減少Bitmap占用過多的內存

6.較好的控制圖片的加載過程,例如暫停圖片加載,重新開始加載圖片,一般使用在ListView,GridView中,滑動過程中暫停加加載圖片,停止滑動的時候去加載圖片

7.提供在較慢的網絡下對圖片進行加載

Glide:Google推薦的圖片加載庫,專注于流暢的滾動。

Glide開源庫特征:

1.支持 Gif、WebP、縮略圖。甚至是 Video,所以更該當做一個媒體緩存。

2.支持優先級處理。

3.內存友好,圖片默認使用默認 RGB_565 而不是 ARGB_888,雖然清晰度差些,但圖片更小,也可配置到 ARGB_888等...

Picasso:Picasso是Square公司出品的一款非常優秀的開源圖片加載庫,是目前Android開發中超級流行的圖片加載庫之一,和OkHttp搭配起來更配呦!

Fresco:Facebook出的,天生驕傲!不是一般的強大。

效果(具體見源碼):

Android中有哪些常用的圖片加載庫

開發環境:AndroidStudio2.2.1+gradle-2.14.1

引入依賴:

//適配器
 compile 'com.classic.adapter:commonadapter:1.2'
 //注解式開發
 compile 'com.jakewharton:butterknife:7.0.1'
compile 'com.nostra13.universalimageloader:universal-image-loader:1.9.4'
 compile 'com.github.bumptech.glide:glide:3.6.1'
 compile 'com.squareup.picasso:picasso:2.5.2'

涉及知識:

1.注解式開發+(Commonadapter)萬能適配器使用

2.圖片加載庫:ImageLoader、Glide、Picasso

3.WebView+SwipeRefreshLayout實現加載和刷新網頁

部分代碼(Gilde使用):

public class GildeActivity extends BaseActivity {
 /**
 * Glide的主要目的有兩個:
 * 1.一個是實現平滑的圖片列表滾動效果,
 * 2.另一個是支持遠程圖片的獲取、大小調整和展示
 * 3.支持Gif 動畫和視頻劇照解碼、智能的暫停和重新開始請求、支持縮略圖
 * http://www.open-open.com/lib/view/open1440397324450.html
 */
 @Bind(R.id.img)
 ImageView img;
 @Bind(R.id.listview)
 ListView listView;
 private String imgurl = "http://avatar.csdn.net/4/A/A/1_zhh_csdn_ard.jpg";
 @Override
 protected int setContentView() {
 return R.layout.gilde_img_layout;
 }
 @Override
 protected void initLayout() {
 GlideAdapter adapter = new GlideAdapter(this, R.layout.listview_img_item, AppConfig.resultImgData());
 listView.setAdapter(adapter);
 }
 @OnClick({R.id.btn0, R.id.btn1, R.id.btn2})
 void onClick(View v) {
 switch (v.getId()) {
  case R.id.btn0:
  test0();
  break;
  case R.id.btn1:
  test1();
  break;
  case R.id.btn2:
  // 必須在UI線程中調用
  Glide.get(GildeActivity.this).clearMemory();
  break;
 }
 }

 //基礎glide網絡圖片加載
// Glide的with方法不光接受Context,還接受Activity 和 Fragment,Context會自動的從他們獲取

 // 圖片的縮放,centerCrop()和fitCenter():
 //使用centerCrop是利用圖片圖填充ImageView設置的大小,如果ImageView的
 private void test0() {
 Glide.with(this)
  .load(imgurl)//路徑支持png,jpg,gif,mp4
  .placeholder(R.mipmap.ic_launcher) // 預加載圖片
  .error(R.mipmap.ic_launcher)//加載圖片失敗
  .crossFade()//淡入淡出動畫效果
  .centerCrop()
  .into(img);
 }
 //gif顯示
 private void test1() {
 Glide.with(this)
  .load("https://timgsa.baidu.com/timg?image&quality=80&size=b9999_10000&
              sec=1491037864865&di=cc8f78a7e5c1d359839cec3463123b47&imgtype=0&
              src=http%3A%2F%2Fi.zeze.com%2Fattachment%2Fforum%2F201501%2F29%2F181236dyjtsu2qinms5qjz.jpg")
  .asGif() //判斷加載的url資源是否為gif格式的資源
  .placeholder(R.mipmap.ic_launcher) // 預加載圖片
  .error(R.mipmap.ic_launcher)//加載圖片失敗
  .into(img);
//  .into(new GlideDrawableImageViewTarget(img, 1));//如果要控制Gif 顯示次數,可以使用
 }
 // 顯示本地視頻
 private void test2() {

 String filePath = "/storage/emulated/0/Pictures/example_video.mp4";
 Glide
  .with(this)
  .load(Uri.fromFile(new File(filePath)))
  .into(img);
 }
 //緩存
 private void test3() {
 Glide
  .with(this)
  .load(imgurl)
  .skipMemoryCache(true) //跳過內存緩存
  .into(img);
 }
 //緩存
 private void test4() {
 Glide
  .with(this)
  .load(imgurl)
  .diskCacheStrategy(DiskCacheStrategy.NONE) //跳過硬盤緩存
  .into(img);
 }
 /**
 * DiskCacheStrategy.NONE 什么都不緩存
 * DiskCacheStrategy.SOURCE 僅僅只緩存原來的全分辨率的圖像
 * DiskCacheStrategy.RESULT 僅僅緩存最終的圖像,即降低分辨率后的(或者是轉換后的)
 * DiskCacheStrategy.ALL 緩存所有版本的圖像(默認行為)
 */
// 使用Glide 顯示圓形圖片
 private void test5() {
 Glide.with(this).load(imgurl).asBitmap().centerCrop().into(new BitmapImageViewTarget(img) {
  @Override
  protected void setResource(Bitmap resource) {
  RoundedBitmapDrawable circularBitmapDrawable =
   RoundedBitmapDrawableFactory.create(GildeActivity.this.getResources(), resource);
  circularBitmapDrawable.setCircular(true);
  img.setImageDrawable(circularBitmapDrawable);
  }
 });
 }
}

看完上述內容,你們掌握Android中有哪些常用的圖片加載庫的方法了嗎?如果還想學到更多技能或想了解更多相關內容,歡迎關注億速云行業資訊頻道,感謝各位的閱讀!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

隆安县| 迁安市| 沁阳市| 富裕县| 岳阳县| 闵行区| 尼玛县| 龙海市| 泽普县| 昌乐县| 北碚区| 诸暨市| 观塘区| 枞阳县| 平果县| 达孜县| 五河县| 东平县| 珠海市| 勐海县| 噶尔县| 德令哈市| 安达市| 晴隆县| 潼关县| 绍兴市| 福安市| 宣城市| 安国市| 顺义区| 凤冈县| 诸暨市| 东乡族自治县| 英德市| 临安市| 乌鲁木齐市| 深泽县| 咸丰县| 呼图壁县| 舒兰市| 淅川县|