怎么創(chuàng)建網(wǎng)站論壇重慶seo公司
文章目錄
- Android Coil總結(jié)
- 概述
- 添加依賴
- 用法
- 基本用法
- 占位圖
- 變形
- 自定義ImageLoader
- 取消加載
- 協(xié)程支持
- 緩存
- 清除緩存
- 監(jiān)聽
- 簡單封裝
Android Coil總結(jié)
概述
Coil 是一個用于 Android 的 Kotlin 圖像加載庫,旨在簡化圖像加載和顯示的過程。它基于 Kotlin 協(xié)程,提供了簡潔的 API 和高效的性能。
添加依賴
implementation "io.coil-kt:coil:2.4.0"
用法
基本用法
// 加載網(wǎng)絡(luò)圖片
binding.imageView1.load("https://www.wanandroid.com/resources/image/pc/logo.png")// 加載本地資源圖片
binding.imageView2.load(R.drawable.logo)// 加載本地路徑圖片
val file = File(cacheDir.path + "/logo.png")
binding.imageView3.load(file)
占位圖
binding.imageView1.load(imgUrl) {crossfade(true) // 淡入淡出placeholder(R.drawable.placeholder) // 加載時占位error(R.drawable.error) // 加載失敗占位
}
變形
binding.imageView1.load(imgUrl) {transformations(CircleCropTransformation()) // 圓形
}
binding.imageView2.load(imgUrl) {transformations(RoundedCornersTransformation(16F)) // 圓角
}
自定義ImageLoader
val imageLoader = ImageLoader.Builder(context).crossfade(true).build()
val request = ImageRequest.Builder(context).data(imgUrl).target(binding.imageView1).build()
imageLoader.enqueue(request)
取消加載
val disposable = binding.imageView1.load(imgUrl)
disposable.dispose() // 取消加載
協(xié)程支持
Coil 基于 Kotlin 協(xié)程,可以協(xié)程中使用。
lifecycleScope.launch {val imageLoader = context.imageLoaderval request = ImageRequest.Builder(context).data(imgUrl).build()val drawable = imageLoader.execute(request).drawablebinding.imageView1.setImageDrawable(drawable)
}
緩存
binding.imageView1.load(imgUrl) {diskCachePolicy(CachePolicy.ENABLED) // 啟用磁盤緩存memoryCachePolicy(CachePolicy.ENABLED) // 啟用內(nèi)存緩存
}
清除緩存
val imageLoader = context.imageLoader
imageLoader.memoryCache?.clear()
imageLoader.diskCache?.clear()
監(jiān)聽
binding.imageView1.load(imgUrl) {listener(onStart = { Log.e("TAG", "開始") },onSuccess = { request, result -> Log.e("TAG", "成功") },onError = { request, result -> Log.e("TAG", "失敗") },onCancel = { Log.e("TAG", "取消") })
}
簡單封裝
object CoilImageLoader {private lateinit var imageLoader: ImageLoader// 初始化 Coil 的 ImageLoader// 可以在Application中初始化fun init(context: Context) {imageLoader = ImageLoader.Builder(context).crossfade(true) // 啟用淡入淡出效果.build()}// 加載網(wǎng)絡(luò)圖片fun loadImage(imageView: ImageView, url: String) {imageView.load(url, imageLoader) {placeholder(R.drawable.placeholder) // 設(shè)置占位圖error(R.drawable.error) // 設(shè)置錯誤圖}}// 加載圓形圖片fun loadCircleImage(imageView: ImageView, url: String) {imageView.load(url, imageLoader) {transformations(CircleCropTransformation()) // 圓形裁剪}}// 加載圓角圖片fun loadRoundedCornersImage(imageView: ImageView, url: String, radius: Float) {imageView.load(url, imageLoader) {transformations(RoundedCornersTransformation(radius)) // 圓角}}// 清除內(nèi)存緩存fun clearMemoryCache() {imageLoader.memoryCache?.clear()}// 清除磁盤緩存fun clearDiskCache(context: Context) {imageLoader.diskCache?.clear()}
}