Add the dependency below to your module's build.gradle
file:
dependencies {
implementation "com.github.skydoves:landscapist-fresco:$version"
}
dependencies {
implementation("com.github.skydoves:landscapist-fresco:$version")
}
Note
Landscapist-Fresco
includes version 2.6.0
of Fresco. So please make sure your project is using the same Fresco version or exclude the Fresco dependency to adapt yours. Also, please make sure the Jetpack Compose version on the release page.
Setup¶
To get started, you should set up Fresco
with ImagePipelineConfig in your Application
class. Generally, it's recommended initializing with OkHttpImagePipelineConfigFactory
. Also, you can customize caching, networking, and thread pool strategies with your own ImagePipelineConfig
. For more details, you can check out Using Other Network Layers.
class App : Application() {
override fun onCreate() {
super.onCreate()
val pipelineConfig =
OkHttpImagePipelineConfigFactory
.newBuilder(this, OkHttpClient.Builder().build())
.setDiskCacheEnabled(true)
.setDownsampleEnabled(true)
.setResizeAndRotateEnabledForNetwork(true)
.build()
Fresco.initialize(this, pipelineConfig)
}
}
FrescoImage¶
You can load images by using the FrescoImage
composable function as the following example below:
FrescoImage(
imageUrl = stringImageUrl, // loading a network image using an URL.
imageOptions = ImageOptions(
contentScale = ContentScale.Crop,
alignment = Alignment.Center
)
)
Compose Metrics¶
According to the Compose Compoler Metrics, the FrescoImage
Composable function is marked as Restartable and Skippable. This means you don't have to worry about performance issues related to re-rendering or re-fetching problems that can occur during recomposition. The Composable function's restartable and skippable nature ensures that the necessary actions are taken to optimize rendering, making it more efficient and seamless.