您好,登錄后才能下訂單哦!
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出的,天生驕傲!不是一般的強大。
效果(具體見源碼):
開發環境: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中有哪些常用的圖片加載庫的方法了嗎?如果還想學到更多技能或想了解更多相關內容,歡迎關注億速云行業資訊頻道,感謝各位的閱讀!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。