Android-圖片加載庫(kù)Coil介紹

框架介紹

Coil是Android上的一個(gè)全新的圖片加載框架手报,它的全名叫做coroutine image loader,即協(xié)程圖片加載庫(kù)。與傳統(tǒng)的圖片加載庫(kù)Glide,Picasso或Fresco等相比结执。該具有輕量(只有大約1500個(gè)方法)、快艾凯、易于使用献幔、更現(xiàn)代的API等優(yōu)勢(shì)。它支持GIF和SVG趾诗,并且可以執(zhí)行四個(gè)默認(rèn)轉(zhuǎn)換:模糊蜡感,圓形裁剪,灰度和圓角恃泪。并且是全用Kotlin編寫郑兴,如果你是純Kotlin項(xiàng)目的話,那么這個(gè)庫(kù)應(yīng)該是你的首選贝乎。

這應(yīng)該是一個(gè)很新的一個(gè)圖片加載庫(kù)情连,完全使用kotlin編寫,使用了kotlin的協(xié)程览效,圖片網(wǎng)絡(luò)請(qǐng)求方式默認(rèn)為Okhttp,相比較于我們常用的Picasso蒙具,Glide或者Fresco,它有以下幾個(gè)特點(diǎn):

  1. 足夠快速朽肥,它在內(nèi)存禁筏、圖片存儲(chǔ)、圖片的采樣衡招、Bitmap重用篱昔、暫停\取消下載等細(xì)節(jié)方面都有很大的優(yōu)化(相比于上面講的三大框架);
  2. 足夠輕量,只有大概1500個(gè)核心方法州刽,當(dāng)然也是相對(duì)于PGF而言的空执;
  3. 足夠新,也足夠現(xiàn)代穗椅!使用了最新的Koltin協(xié)程所編寫辨绊,充分發(fā)揮了CPU的性能,同時(shí)也使用了OKHttp匹表、Okio门坷、LifeCycle等比較新式的Android庫(kù)。

使用

github地址為:https://github.com/coil-kt/coil/

首先需要配置你的AS環(huán)境包含Kotlin開發(fā)環(huán)境袍镀,然后添加依賴:

implementation("io.coil-kt:coil:1.1.1")

要將圖像加載到ImageView中默蚌,請(qǐng)使用加載擴(kuò)展功能:

// URL
imageView.load("https://www.example.com/image.jpg")
 
// Resource
imageView.load(R.drawable.image)
 
// File
imageView.load(File("/path/to/image.jpg"))
 
// And more...

可以使用可選的配置請(qǐng)求:

imageView.load("https://www.example.com/image.jpg") {
    crossfade(true)
    placeholder(R.drawable.image)
    transformations(CircleCropTransformation())
}

基本變化:

Coil默認(rèn)提供了四種變換:模糊變換(BlurTransformation)、圓形變換(CircleCropTransformation)苇羡、灰度變換(GrayscaleTransformation)和圓角變換(RoundedCornersTransformation):

基礎(chǔ)用法:

imageView.load(IMAGE_URL){
     transformations(GrayscaleTransformation())
}

直接加入變換就可以, 同時(shí)可支持多種變換:

 imageView.load(IMAGE_URL) {
            transformations(GrayscaleTransformation(),
                            RoundedCornersTransformation(topLeft = 2f, topRight = 
            2f,bottomLeft = 40f, bottomRight = 40f))
}

Gif加載

Coil基礎(chǔ)包中是不支持Gif加載的绸吸,需要添加extend包:

implementation("io.coil-kt:coil-gif:0.9.5")

此時(shí)需要更改一下代碼的方式,在imageLoader中注冊(cè)Gif組件:

val gifImageLoader = ImageLoader(this) {
            componentRegistry {
                if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.P) {
                    add(ImageDecoderDecoder())
                } else {
                    add(GifDecoder())
                }
            }
}

使用本組件之后设江,ImageView可直接使用:

id_image_gif.load(GIF_IMAGE_URL, gifImageLoader)

SVG加載

Coil也可以進(jìn)行SVG加載的锦茁,同gif一樣,也是需要添加extend包的:

implementation("io.coil-kt:coil-svg:0.9.5")

代碼如下:

val svgImageLoader = ImageLoader(this){
            componentRegistry {
                add(SvgDecoder(this@MainActivity))
            }
        }
 
id_image_svg.load(R.drawable.ic_directions_bus_black_24dp, svgImageLoader)

從Glide\Picasso遷移到Coil

基本的用法的擴(kuò)展為:

// Glide
     Glide.with(context)
    .load(url)
    .into(imageView)
 
// Picasso
     Picasso.get()
    .load(url)
    .into(imageView)
 
// Coil
   imageView.load(url)

圖片設(shè)置ScaleType的方式:

imageView.scaleType = ImageView.ScaleType.FIT_CENTER
 
    // Glide
    Glide.with(context)
     .load(url)
     .placeholder(placeholder)
     .fitCenter()
     .into(imageView)
 
    // Picasso
    Picasso.get()
        .load(url)
        .placeholder(placeholder)
        .fit()
        .into(imageView)
 
    // Coil (autodetects the scale type)
    imageView.load(url) {
     placeholder(placeholder)
}
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末叉存,一起剝皮案震驚了整個(gè)濱河市码俩,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌鹉胖,老刑警劉巖握玛,帶你破解...
    沈念sama閱讀 221,430評(píng)論 6 515
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件够傍,死亡現(xiàn)場(chǎng)離奇詭異甫菠,居然都是意外死亡,警方通過(guò)查閱死者的電腦和手機(jī)冕屯,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,406評(píng)論 3 398
  • 文/潘曉璐 我一進(jìn)店門寂诱,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái),“玉大人安聘,你說(shuō)我怎么就攤上這事痰洒。” “怎么了浴韭?”我有些...
    開封第一講書人閱讀 167,834評(píng)論 0 360
  • 文/不壞的土叔 我叫張陵丘喻,是天一觀的道長(zhǎng)。 經(jīng)常有香客問(wèn)我念颈,道長(zhǎng)泉粉,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 59,543評(píng)論 1 296
  • 正文 為了忘掉前任,我火速辦了婚禮嗡靡,結(jié)果婚禮上跺撼,老公的妹妹穿的比我還像新娘。我一直安慰自己讨彼,他們只是感情好歉井,可當(dāng)我...
    茶點(diǎn)故事閱讀 68,547評(píng)論 6 397
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著哈误,像睡著了一般哩至。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上黑滴,一...
    開封第一講書人閱讀 52,196評(píng)論 1 308
  • 那天憨募,我揣著相機(jī)與錄音,去河邊找鬼袁辈。 笑死菜谣,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的晚缩。 我是一名探鬼主播尾膊,決...
    沈念sama閱讀 40,776評(píng)論 3 421
  • 文/蒼蘭香墨 我猛地睜開眼,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼荞彼!你這毒婦竟也來(lái)了冈敛?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 39,671評(píng)論 0 276
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤鸣皂,失蹤者是張志新(化名)和其女友劉穎抓谴,沒(méi)想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體寞缝,經(jīng)...
    沈念sama閱讀 46,221評(píng)論 1 320
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡癌压,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 38,303評(píng)論 3 340
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了荆陆。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片滩届。...
    茶點(diǎn)故事閱讀 40,444評(píng)論 1 352
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖被啼,靈堂內(nèi)的尸體忽然破棺而出帜消,到底是詐尸還是另有隱情,我是刑警寧澤浓体,帶...
    沈念sama閱讀 36,134評(píng)論 5 350
  • 正文 年R本政府宣布泡挺,位于F島的核電站,受9級(jí)特大地震影響命浴,放射性物質(zhì)發(fā)生泄漏娄猫。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,810評(píng)論 3 333
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望稚新。 院中可真熱鬧勘伺,春花似錦、人聲如沸褂删。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,285評(píng)論 0 24
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)屯阀。三九已至缅帘,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間难衰,已是汗流浹背钦无。 一陣腳步聲響...
    開封第一講書人閱讀 33,399評(píng)論 1 272
  • 我被黑心中介騙來(lái)泰國(guó)打工, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留盖袭,地道東北人失暂。 一個(gè)月前我還...
    沈念sama閱讀 48,837評(píng)論 3 376
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像鳄虱,于是被迫代替她去往敵國(guó)和親弟塞。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,455評(píng)論 2 359

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