Android Picasso圖片處理框架詳解

Picasso

1税灌、什么是Picasso

  • 1、 是目前Android開發(fā)中超級(jí)流行的圖片加載庫(kù)之一亿虽。

  • 2菱涤、強(qiáng)大的圖片下載、類型轉(zhuǎn)化和緩存管理洛勉。載入本地資源粘秆,對(duì)資源進(jìn)行回收。官網(wǎng)地址戳這里收毫。

2攻走、Picasso作用

  • 1殷勘、在adapter中需要取消已經(jīng)不在視野范圍的ImageView圖片資源的加載,否則會(huì)導(dǎo)致圖片錯(cuò)位陋气,Picasso已經(jīng)解決了這個(gè)問(wèn)題劳吠。

  • 2、使用復(fù)雜的圖片壓縮轉(zhuǎn)換來(lái)盡可能的減少內(nèi)存消耗巩趁。

  • 3痒玩、自帶內(nèi)存和硬盤二級(jí)緩存功能。

3议慰、核心類及功能代碼的實(shí)現(xiàn)

使用步驟:

  • 1蠢古、 引入picasso
compile 'com.squareup.picasso:picasso:2.5.2'
  • 2 、添加權(quán)限
  <uses-permission android:name="android.permission.INTERNET" />
  <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
  <uses-permission android:name="android.permission.MOUNT_UNMOUNT_FILESYSTEMS" />
  <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
  • 3别凹、使用方式
Picasso.with(context).load(url).placeholder(R.drawable.tabbg).into(imageView);
  //使用下載:自動(dòng)緩存到磁盤內(nèi)存或者內(nèi)存緩存 Picasso.with(context).load(url).placeholder(R.drawable.tab_item_bg).into(target);
  Picasso picasso = Picasso.with(MainActivity.this);
  RequestCreator request = picasso.load(mDataUries.get(position));
  request.into(icon);
  return icon;

4草讶、Picasso圖片操作

  • 1:加載本地圖片
 int resourceId = R.mipmap.ic_launcher;
 Picasso.with(this).load(resourceId).into(iv1);
  • 2:加載SD卡圖片
File file = new File(path2);
Picasso.with(this).load(file).into(iv2);
  • 3:加載圖片并裁剪
Picasso.with(this).load("http://www.reibang.com/p/78fc09d1ede5?utm_medium=index-banner&utm_source=desktop")  
                .resizeDimen(R.dimen.iv_width,R.dimen.iv_height)  
                .into(iv);
  • 4:添加占位圖 、加載失敗的圖片
  Picasso.with(context)
     .load(url)
     .placeholder(R.drawable.user_placeholder)
     .error(R.drawable.user_placeholder_error)
     .into(imageView);
  • 5:加載圖片過(guò)大要放棄緩存( Picasso默認(rèn)會(huì)使用設(shè)備的15%的內(nèi)存作為內(nèi)存圖片緩存炉菲,且現(xiàn)有的api無(wú)法清空內(nèi)存緩存堕战。我們可以在查看大圖時(shí)放棄使用內(nèi)存緩存,圖片從網(wǎng)絡(luò)下載完成后會(huì)緩存到磁盤中拍霜,加載會(huì)從磁盤中加載嘱丢,這樣可以加速內(nèi)存的回收 )
Picasso.with(this).load("url")//查看大圖放棄緩存,加速內(nèi)存的回收
                  .memoryPolicy(NO_CACHE, NO_STORE)
                  .into(iv6);
  • 6: 計(jì)算出最佳的大小及最佳的圖片質(zhì)量來(lái)進(jìn)行圖片展示 ( 減少內(nèi)存 )
Picasso.with(this).load("http://img.my.csdn.net/uploads/201407/26/1406383243_5120.jpg")
                   .fit()
                   .into(img8);
  • 7:自定義圖片控件加載
     /**
       *  重寫ImageView的onDetachedFromWindow方法祠饺,在它從屏幕中消失時(shí)回調(diào)越驻,去掉drawable引用,能加快內(nèi)存的回收道偷。
       *  priority()設(shè)置圖片加載的優(yōu)先級(jí)
       *  如果一個(gè)屏幕上頂部圖片較大,而底部圖片較小,因?yàn)镻icasso是異步加載,所以小圖會(huì)先加載出來(lái),但是對(duì)于用戶來(lái)說(shuō),更希望看到的是上面的圖片先加載,
       *  底部的圖片后加載,Picasso支持設(shè)置優(yōu)先級(jí),分為HIGH, MEDIUM, 和 LOW,所有的加載默認(rèn)優(yōu)先級(jí)為MEDIUM;
       */
Picasso.with(this).load("http://img.my.csdn.net/uploads/201407/26/1406383243_5120.jpg")
                  .priority(HIGH)
                  .into(recyclerImageView);
  • 8:圖像轉(zhuǎn)換
public class CropSquareTransformation implements Transformation {
   @Override public Bitmap transform(Bitmap source) {
     int size = Math.min(source.getWidth(), source.getHeight());
     int x = (source.getWidth() - size) / 2;
     int y = (source.getHeight() - size) / 2;
     Bitmap result = Bitmap.createBitmap(source, x, y, size, size);
     if (result != source) {
       source.recycle();
     }
     return result;
   }
   @Override public String key() { return "square()"; }
 }
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末缀旁,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子勺鸦,更是在濱河造成了極大的恐慌并巍,老刑警劉巖,帶你破解...
    沈念sama閱讀 216,470評(píng)論 6 501
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件祝旷,死亡現(xiàn)場(chǎng)離奇詭異履澳,居然都是意外死亡,警方通過(guò)查閱死者的電腦和手機(jī)怀跛,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,393評(píng)論 3 392
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)柄冲,“玉大人吻谋,你說(shuō)我怎么就攤上這事∠趾幔” “怎么了漓拾?”我有些...
    開封第一講書人閱讀 162,577評(píng)論 0 353
  • 文/不壞的土叔 我叫張陵阁最,是天一觀的道長(zhǎng)。 經(jīng)常有香客問(wèn)我骇两,道長(zhǎng)速种,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,176評(píng)論 1 292
  • 正文 為了忘掉前任低千,我火速辦了婚禮配阵,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘示血。我一直安慰自己棋傍,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,189評(píng)論 6 388
  • 文/花漫 我一把揭開白布难审。 她就那樣靜靜地躺著瘫拣,像睡著了一般。 火紅的嫁衣襯著肌膚如雪告喊。 梳的紋絲不亂的頭發(fā)上麸拄,一...
    開封第一講書人閱讀 51,155評(píng)論 1 299
  • 那天,我揣著相機(jī)與錄音黔姜,去河邊找鬼拢切。 笑死,一個(gè)胖子當(dāng)著我的面吹牛地淀,可吹牛的內(nèi)容都是我干的失球。 我是一名探鬼主播,決...
    沈念sama閱讀 40,041評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼帮毁,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼实苞!你這毒婦竟也來(lái)了?” 一聲冷哼從身側(cè)響起烈疚,我...
    開封第一講書人閱讀 38,903評(píng)論 0 274
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤黔牵,失蹤者是張志新(化名)和其女友劉穎,沒(méi)想到半個(gè)月后爷肝,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體猾浦,經(jīng)...
    沈念sama閱讀 45,319評(píng)論 1 310
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,539評(píng)論 2 332
  • 正文 我和宋清朗相戀三年灯抛,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了金赦。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 39,703評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡对嚼,死狀恐怖夹抗,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情纵竖,我是刑警寧澤漠烧,帶...
    沈念sama閱讀 35,417評(píng)論 5 343
  • 正文 年R本政府宣布杏愤,位于F島的核電站,受9級(jí)特大地震影響已脓,放射性物質(zhì)發(fā)生泄漏珊楼。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,013評(píng)論 3 325
  • 文/蒙蒙 一度液、第九天 我趴在偏房一處隱蔽的房頂上張望厕宗。 院中可真熱鬧,春花似錦恨诱、人聲如沸媳瞪。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,664評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)蛇受。三九已至,卻和暖如春厕鹃,著一層夾襖步出監(jiān)牢的瞬間兢仰,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 32,818評(píng)論 1 269
  • 我被黑心中介騙來(lái)泰國(guó)打工剂碴, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留把将,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 47,711評(píng)論 2 368
  • 正文 我出身青樓忆矛,卻偏偏與公主長(zhǎng)得像察蹲,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子催训,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,601評(píng)論 2 353

推薦閱讀更多精彩內(nèi)容