国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 系統(tǒng) > Android > 正文

Android常用的圖片加載庫(kù)

2019-12-12 03:10:29
字體:
供稿:網(wǎng)友

前言:圖片加載涉及到圖片的緩存、圖片的處理、圖片的顯示等。四種常用的圖片加載框架,分別是Fresco、ImageLoader、 Picasso、 Glide。

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

ImageLoader開源庫(kù)存哪些特征:

1.多線程下載圖片,圖片可以來源于網(wǎng)絡(luò),文件系統(tǒng),項(xiàng)目文件夾assets中以及drawable中等

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

3.支持圖片的內(nèi)存緩存,文件系統(tǒng)緩存或者SD卡緩存

4.支持圖片下載過程的監(jiān)聽

5.根據(jù)控件(ImageView)的大小對(duì)Bitmap進(jìn)行裁剪,減少Bitmap占用過多的內(nèi)存

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

7.提供在較慢的網(wǎng)絡(luò)下對(duì)圖片進(jìn)行加載

Glide:Google推薦的圖片加載庫(kù),專注于流暢的滾動(dòng)。

Glide開源庫(kù)特征:

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

2.支持優(yōu)先級(jí)處理。

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

Picasso:Picasso是Square公司出品的一款非常優(yōu)秀的開源圖片加載庫(kù),是目前Android開發(fā)中超級(jí)流行的圖片加載庫(kù)之一,和OkHttp搭配起來更配呦!

Fresco:Facebook出的,天生驕傲!不是一般的強(qiáng)大。

效果(具體見源碼):

開發(fā)環(huán)境:AndroidStudio2.2.1+gradle-2.14.1

引入依賴:

//適配器 compile 'com.classic.adapter:commonadapter:1.2' //注解式開發(fā) 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'

涉及知識(shí):

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

2.圖片加載庫(kù):ImageLoader、Glide、Picasso

3.WebView+SwipeRefreshLayout實(shí)現(xiàn)加載和刷新網(wǎng)頁

部分代碼(Gilde使用):

public class GildeActivity extends BaseActivity { /** * Glide的主要目的有兩個(gè): * 1.一個(gè)是實(shí)現(xiàn)平滑的圖片列表滾動(dòng)效果, * 2.另一個(gè)是支持遠(yuǎn)程圖片的獲取、大小調(diào)整和展示 * 3.支持Gif 動(dòng)畫和視頻劇照解碼、智能的暫停和重新開始請(qǐng)求、支持縮略圖 * 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線程中調(diào)用  Glide.get(GildeActivity.this).clearMemory();  break; } } //基礎(chǔ)glide網(wǎng)絡(luò)圖片加載// Glide的with方法不光接受Context,還接受Activity 和 Fragment,Context會(huì)自動(dòng)的從他們獲取 // 圖片的縮放,centerCrop()和fitCenter(): //使用centerCrop是利用圖片圖填充ImageView設(shè)置的大小,如果ImageView的 private void test0() { Glide.with(this)  .load(imgurl)//路徑支持png,jpg,gif,mp4  .placeholder(R.mipmap.ic_launcher) // 預(yù)加載圖片  .error(R.mipmap.ic_launcher)//加載圖片失敗  .crossFade()//淡入淡出動(dòng)畫效果  .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) // 預(yù)加載圖片  .error(R.mipmap.ic_launcher)//加載圖片失敗  .into(img);//  .into(new GlideDrawableImageViewTarget(img, 1));//如果要控制Gif 顯示次數(shù),可以使用 } // 顯示本地視頻 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) //跳過內(nèi)存緩存  .into(img); } //緩存 private void test4() { Glide  .with(this)  .load(imgurl)  .diskCacheStrategy(DiskCacheStrategy.NONE) //跳過硬盤緩存  .into(img); } /** * DiskCacheStrategy.NONE 什么都不緩存 * DiskCacheStrategy.SOURCE 僅僅只緩存原來的全分辨率的圖像 * DiskCacheStrategy.RESULT 僅僅緩存最終的圖像,即降低分辨率后的(或者是轉(zhuǎn)換后的) * DiskCacheStrategy.ALL 緩存所有版本的圖像(默認(rèn)行為) */// 使用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);  } }); }}

源碼下載...

以上就是本文的全部?jī)?nèi)容,希望本文的內(nèi)容對(duì)大家的學(xué)習(xí)或者工作能帶來一定的幫助,同時(shí)也希望多多支持武林網(wǎng)!

發(fā)表評(píng)論 共有條評(píng)論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
主站蜘蛛池模板: 伊川县| 英德市| 肇庆市| 奇台县| 金沙县| 平舆县| 邓州市| 武鸣县| 永嘉县| 沙田区| 玛沁县| 夏河县| 磐安县| 陆丰市| 贺州市| 南丰县| 漳浦县| 博乐市| 乐陵市| 安西县| 松滋市| 吕梁市| 邵武市| 香河县| 邻水| 萝北县| 周至县| 囊谦县| 鄂托克前旗| 罗江县| 聂拉木县| 伽师县| 沙湾县| 屏山县| 常宁市| 广平县| 瑞安市| 滕州市| 弥渡县| 霍城县| 遵义市|