日韩无码专区无码一级三级片|91人人爱网站中日韩无码电影|厨房大战丰满熟妇|AV高清无码在线免费观看|另类AV日韩少妇熟女|中文日本大黄一级黄色片|色情在线视频免费|亚洲成人特黄a片|黄片wwwav色图欧美|欧亚乱色一区二区三区

RELATEED CONSULTING
相關咨詢
選擇下列產品馬上在線溝通
服務時間:8:30-17:00
你可能遇到了下面的問題
關閉右側工具欄

新聞中心

這里有您想知道的互聯(lián)網營銷解決方案
Android進階之Coil-為kotlin而生的圖片庫詳解

本文轉載自微信公眾號「Android開發(fā)編程」,作者Android開發(fā)編程。轉載本文請聯(lián)系Android開發(fā)編程公眾號。

前言

Coil是Android上的一個全新的圖片加載框架,它的全名叫做coroutine image loader,即協(xié)程圖片加載庫;

與傳統(tǒng)的圖片加載庫Glide,Picasso或Fresco等相比。該具有輕量(只有大約1500個方法)、快、易于使用、更現(xiàn)代的API等優(yōu)勢;

它支持GIF和SVG,并且可以執(zhí)行四個默認轉換:模糊,圓形裁剪,灰度和圓角。并且是全用Kotlin編寫,如果你是純Kotlin項目的話,那么這個庫應該是你的首選;

一、Coil介紹和使用

1、Coil介紹

Coil 是一個 Android 圖片加載庫,通過 Kotlin 協(xié)程的方式加載圖片。特點如下:

  • 更快: Coil 在性能上有很多優(yōu)化,包括內存緩存和磁盤緩存,把縮略圖存保存在內存中,循環(huán)利用 bitmap,自動暫停和取消圖片網絡請求等;
  • 更輕量級:Coil 只有2000個方法(前提是你的 APP 里面集成了 OkHttp 和 Coroutines),Coil 和 Picasso 的方法數(shù)差不多,相比 Glide 和 Fresco 要輕量很多;
  • 更容易使用: Coil 的 API 充分利用了 Kotlin 語言的新特性,簡化和減少了很多樣板代碼;
  • 更流行: Coil 首選 Kotlin 語言開發(fā)并且使用包含 Coroutines, OkHttp, Okio 和 AndroidX Lifecycles 在內最流行的開源庫;

2、使用

①Coil 可以在 mavenCentral() 下載

 
 
 
  1. implementation("io.coil-kt:coil:1.2.1") 

②可以使用 ImageView 的擴展函數(shù) load 加載一張圖片:

 
 
 
  1. // URL 
  2. imageView.load("https://www.example.com/image.jpg") 
  3. // Resource 
  4. imageView.load(R.drawable.image) 
  5. // File 
  6. imageView.load(File("/path/to/image.jpg")) 

可以使用 lambda 語法輕松配置請求選項:

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

error

 
 
 
  1. imageView.load(url) { 
  2.         error(R.drawable.error) 
  3.     } 

placeholder預置展位圖

 
 
 
  1. imageView.load(url) { 
  2.         placeholder(R.drawable.placeholder) 
  3.         crossfade(3000) 
  4.     } 

crossfade的動畫時間

 
 
 
  1. imageView.load(url) { 
  2.         crossfade(3000) 
  3.     } 

③transformations

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

基礎用法:

 
 
 
  1. imageView.load(IMAGE_URL){ 
  2.      transformations(GrayscaleTransformation()) 

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

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

④Gif加載

Coil基礎包中是不支持Gif加載的,需要添加extend包:

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

此時需要更改一下代碼的方式,在imageLoader中注冊Gif組件:

 
 
 
  1. val gifImageLoader = ImageLoader(this) { 
  2.             componentRegistry { 
  3.                 if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.P) { 
  4.                     add(ImageDecoderDecoder()) 
  5.                 } else { 
  6.                     add(GifDecoder()) 
  7.                 } 
  8.             } 

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

 
 
 
  1. id_image_gif.load(GIF_IMAGE_URL, gifImageLoader) 

⑤SVG加載

Coil也可以進行SVG加載的,同gif一樣,也是需要添加extend包的:

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

代碼如下:

 
 
 
  1. val svgImageLoader = ImageLoader(this){ 
  2.             componentRegistry { 
  3.                 add(SvgDecoder(this@MainActivity)) 
  4.             } 
  5.         } 
  6. id_image_svg.load(R.drawable.ic_directions_bus_black_24dp, svgImageLoader) 

總結

Coil可以配合Kotlin協(xié)程實現(xiàn)圖片加載:

  • 加載性能好:緩存管理(MemCache、DiskCache)、動態(tài)采樣(Dynamic image sampling)、加載中暫停/終止等功能有助于提高圖片加載效率
  • 體積小:其包體積與Picasso相當,顯著低于Glide和Fresco,僅僅只有1500個方法,但是在功能上卻不輸于其他同類庫;
  • 簡單易用:配合Kotlin擴展方法等語法優(yōu)勢,API簡單易用;
  • 技術先進:基于Coroutine、OkHttp、Okio、AndroidX等先端技術開發(fā),確保了技術上的先進性;

標題名稱:Android進階之Coil-為kotlin而生的圖片庫詳解
標題URL:http://www.5511xx.com/article/cdiggho.html