91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

Android圖片加載框架Coil如何使用

發布時間:2022-07-29 09:51:33 來源:億速云 閱讀:360 作者:iii 欄目:開發技術

這篇文章主要介紹“Android圖片加載框架Coil如何使用”的相關知識,小編通過實際案例向大家展示操作過程,操作方法簡單快捷,實用性強,希望這篇“Android圖片加載框架Coil如何使用”文章能幫助大家解決問題。

簡介

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

  • 更快: Coil 在性能上有很多優化,包括內存緩存和磁盤緩存,把縮略圖存保存在內存中,循環利用 bitmap,自動暫停和取消圖片網絡請求等。

  • 更輕量級: Coil 只有2000個方法(前提是你的 APP 里面集成了 OkHttp 和 Coroutines),Coil 和 Picasso 的方法數差不多,相比 Glide 和 Fresco 要輕量很多。

  • 更容易使用: Coil 的 API 充分利用了 Kotlin 語言的新特性,簡化和減少了很多樣板代碼。

  • 更流行: Coil 首選 Kotlin 語言開發并且使用包含 Coroutines, OkHttp, Okio 和 AndroidX Lifecycles 在內最流行的開源庫。
    Coil 名字的由來:取 Coroutine Image Loader 首字母得來。

添加依賴:

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

簡單使用

// 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...

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

imageView.load("https://www.example.com/image.jpg") {
    crossfade(true) //漸進進出
    placeholder(R.drawable.image) //加載中占位圖
    transformations(CircleCropTransformation())  //圓形圖
    error(R.drawable.image) //加載錯誤占位圖
}

高斯模糊

//正常圖片
mBinding.image1.load(imageUrl)

//高斯模糊-輕微模糊
mBinding.image11.load(imageUrl) {
     transformations(BlurTransformation(this@MainActivity, 5f, 10f))
     scale(Scale.FILL)
}

//高斯模式-嚴重模糊
mBinding.image12.load(imageUrl) {
     transformations(BlurTransformation(this@MainActivity, 20f, 40f))
     scale(Scale.FILL)
 }

效果圖:

Android圖片加載框架Coil如何使用

圓角

        //沒有圓角
        mBinding.image1.load(imageUrl){
            transformations(RoundedCornersTransformation())
            scale(Scale.FILL)
        }

        //圓角一樣
        mBinding.image11.load(imageUrl) {
            transformations(RoundedCornersTransformation(20f))
            scale(Scale.FILL)
        }

        //圓角不一樣
        mBinding.image12.load(imageUrl) {
            transformations(
                RoundedCornersTransformation(
                    topLeft = 20f,
                    topRight = 20f,
                    bottomLeft = 50f,
                    bottomRight = 50f
                )
            )
            scale(Scale.FILL)
        }

效果圖:

Android圖片加載框架Coil如何使用

圓形

布局文件

<ImageView
     android:id="@+id/image1"
     android:layout_gravity="center"
     android:layout_width="150dp"
     android:layout_height="150dp" />

代碼:

mBinding.image1.load(imageUrl){
     transformations(CircleCropTransformation())
     scale(Scale.FILL)
}

效果圖:

Android圖片加載框架Coil如何使用

灰色變換 GrayscaleTransformation

簡單來說就是把彩色圖變成灰色的

mBinding.image1.load(imageUrl) {
    transformations(GrayscaleTransformation())
}

效果圖:

Android圖片加載框架Coil如何使用

Gif

添加依賴

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

創建 gif ImageLoader 實例

val imageLoader = ImageLoader.Builder(context)
    .componentRegistry {
        if (SDK_INT >= 28) {
            add(ImageDecoderDecoder(context))
        } else {
            add(GifDecoder())
        }
    }
    .build()
    
 //設置全局唯一實例
 Coil.setImageLoader(imageLoader)

加載 gif 圖片:

mBinding.image1.load(gifUrl)

效果圖如下:

Android圖片加載框架Coil如何使用

監聽下載過程

mBinding.image1.load(imageUrl) {
      listener(
           onStart = { request ->
               Log.d("coil-", "onStart")
            },
           onError = { request, throwable ->
               Log.d("coil-", "onError")
           },
           onCancel = { request ->
               Log.d("coil-", "onCancel")
           },
           onSuccess = { request, metadata ->
               Log.d("coil-", "onSuccess")
           }
       )
}

取消下載

val imageUrl = "https://t7.baidu.com/it/u=433422559,1779762296&fm=193&f=GIF"

val disposable = mBinding.image1.load(imageUrl)

//取消加載
disposable.dispose()

替換 okhttp 實例

coil 底層是使用 okhttp 作為網絡請求工具,可以設置 okHttpClient 實例

val okHttpClient = OkHttpClient.Builder()
       .cache(CoilUtils.createDefaultCache(this))
       .build()

val imageLoader = ImageLoader.Builder(this).okHttpClient {
     okHttpClient
}.build()
        
Coil.setImageLoader(imageLoader)

自定義

  val okHttpClient = OkHttpClient.Builder()
            .cache(CoilUtils.createDefaultCache(this))
            .build()

        val imageLoader = ImageLoader.Builder(this)
            .availableMemoryPercentage(0.2)
            .diskCachePolicy(CachePolicy.ENABLED)  //磁盤緩策略 ENABLED、READ_ONLY、WRITE_ONLY、DISABLED
            .crossfade(true) //淡入淡出
            .crossfade(1000)  //淡入淡出時間
            .okHttpClient {  //設置okhttpClient實例
                okHttpClient
            }.build()

        Coil.setImageLoader(imageLoader)

availableMemoryPercentage 設置用于此 ImageLoader 的內存緩存和位圖池的可用內存百分比,范圍:0-1 , 如果為0 , 則禁用內存緩存。

默認行為:

Android圖片加載框架Coil如何使用

memoryCachePolicy 內存緩存策略,有4中策略,默認為 CachePolicy.ENABLED

Android圖片加載框架Coil如何使用

diskCachePolicy 磁盤緩存策略,方式和內存策略一直

crossfade 開啟淡入淡出

Coil 源碼分析

Coil 是一個單例類

Android圖片加載框架Coil如何使用

關于“Android圖片加載框架Coil如何使用”的內容就介紹到這里了,感謝大家的閱讀。如果想了解更多行業相關的知識,可以關注億速云行業資訊頻道,小編每天都會為大家更新不同的知識點。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

建宁县| 军事| 新余市| 惠水县| 兴城市| 卫辉市| 碌曲县| 鹤岗市| 汝南县| 新余市| 贵港市| 定南县| 汤阴县| 根河市| 石柱| 肥乡县| 阿拉尔市| 侯马市| 仁怀市| 株洲县| 九台市| 陵水| 余干县| 通河县| 湘乡市| 峨边| 宝兴县| 大洼县| 永州市| 阳朔县| 焉耆| 兴国县| 吉木萨尔县| 抚顺市| 名山县| 西青区| 新民市| 河北区| 寿宁县| 沂水县| 新干县|