Image 模块是基于 Fresco 的图片加载框架封装,提供了统一的图片加载接口、缓存管理、图片处理和显示功能。该模块简化了 Fresco 的使用,提供了更便捷的图片加载 API。
// 图片加载器接口
interface ImageLoader {
fun load(url: String): ImageRequest
fun load(uri: Uri): ImageRequest
fun load(resourceId: Int): ImageRequest
fun preload(url: String)
fun clearCache()
fun pauseRequests()
fun resumeRequests()
}
// 图片请求构建器
class ImageRequest {
fun into(imageView: ImageView)
fun placeholder(drawable: Drawable): ImageRequest
fun error(drawable: Drawable): ImageRequest
fun resize(width: Int, height: Int): ImageRequest
fun centerCrop(): ImageRequest
fun centerInside(): ImageRequest
fun transform(transformation: Transformation): ImageRequest
fun fade(duration: Int): ImageRequest
}
// 加载网络图片
ImageLoader.load("https://example.com/image.jpg")
.placeholder(R.drawable.placeholder)
.error(R.drawable.error)
.into(imageView)
// 加载本地资源
ImageLoader.load(R.drawable.local_image)
.into(imageView)
// 加载本地文件
ImageLoader.load(Uri.fromFile(file))
.into(imageView)
ImageLoader.load(imageUrl)
.resize(300, 200)
.centerCrop()
.transform(RoundedCornersTransformation(10))
.into(imageView)
<com.adealink.frame.image.CircleImageView
android:layout_width="100dp"
android:layout_height="100dp"
app:border_width="2dp"
app:border_color="#ffffff"
app:src="@drawable/avatar_placeholder" />
// 预加载图片
ImageLoader.preload("https://example.com/image.jpg")
// 清理缓存
ImageLoader.clearCache()
// 暂停/恢复请求(用于列表滚动优化)
ImageLoader.pauseRequests()
ImageLoader.resumeRequests()
// 图片加载配置
class ImageConfig {
var memoryCache: Boolean = true
var diskCache: Boolean = true
var cacheSize: Long = 100 * 1024 * 1024 // 100MB
var placeholder: Drawable? = null
var errorDrawable: Drawable? = null
var fadeInDuration: Int = 300
var enableProgressiveJPEG: Boolean = true
var enableWebP: Boolean = true
}
com.facebook.fresco - Fresco 图片加载库frame:base - 基础框架模块frame:util - 工具类模块implementation "com.wenext.android:frame-image:6.0.0"