用途:在 Jetpack Compose 中实现图片加载时,提供使用 Coil(Coroutines Image Loader)的专家指导,适用于从 URL 加载图片、处理加载状态与优化性能等场景。
主要能力与用法:
- 首选 AsyncImage,适用于大多数场景,自动处理尺寸解析并支持标准 Image 参数,可配合 ImageRequest.Builder 设置 data、crossfade(true),并传入 placeholder、error、contentDescription、contentScale 与 modifier。
- 仅在需要 Painter(如 Canvas、Icon)或需手动观察加载状态时使用 rememberAsyncImagePainter。注意它默认按原始尺寸加载,不检测屏幕显示尺寸,必要时显式设置 size(Size.ORIGINAL)。
- 需要自定义 Loading、Success、Error 插槽时使用 SubcomposeAsyncImage,但子组合比常规组合慢,应避免在 LazyColumn、LazyRow 等性能敏感区域使用。
性能与最佳实践:整个应用使用单例 ImageLoader 以共享磁盘与内存缓存;Coil 自动在后台线程执行请求,主线程安全;建议在 ImageRequest 中启用 crossfade(true) 以获得更平滑的过渡;合理设置 contentScale,避免加载过大的图片。
实现检查清单:优先使用 AsyncImage;为图片提供有意义的 contentDescription,装饰性图片设为 null;使用 crossfade(true) 改善体验;避免在列表中使用 SubcomposeAsyncImage;按需配置 ImageRequest,例如使用 CircleCropTransformation 等变换。
限制:资料未提供具体版本要求、依赖安装命令、收费与平台信息,暂未提供。