Hmage is a Compose-based image loading library that supports multiple platforms, including Android and iOS. It provides an easy-to-use interface for loading and displaying remote images.
Add the following dependency to your project's build.gradle file:
dependencies {
implementation 'top.heiha.huntun:hmage:0.0.1-dev'
}
Hmage provides two composable functions for loading and displaying images:
@Composable
fun Hmage(
url: String,
contentDescription: String?,
modifier: Modifier = Modifier,
alignment: Alignment = Alignment.Center,
contentScale: ContentScale = ContentScale.Fit,
alpha: Float = DefaultAlpha,
colorFilter: ColorFilter? = null
)
@Composable
fun Hmage(
source: StatedImageSource,
contentDescription: String?,
modifier: Modifier = Modifier,
alignment: Alignment = Alignment.Center,
contentScale: ContentScale = ContentScale.Fit,
alpha: Float = DefaultAlpha,
colorFilter: ColorFilter? = null
)
The first function takes a URL string as the image source, while the second function takes a StatedImageSource
object that represents the image source, including the normal, placeholder, and error states.
data class StatedImageSource(
val normal: String,
val placeholder: String? = null,
val error: String? = null
)
Hmage uses a memory & disk cache to cache the loaded images, so subsequent requests for the same image will not trigger another network request.
- memory cache: Use LRU Strategy
- disk cache: Just cache, the particular strategy will be implemented in future.
Here is an example of how to use Hmage to load an image from a remote URL:
Hmage(
url = "https://example.com/image.png",
contentDescription = "Example Image",
modifier = Modifier.fillMaxSize(),
contentScale = ContentScale.FillWidth
)
And here is an example of how to use Hmage to load an image from a local resource:
Hmage(
source = StatedImageSource(
normal = "image.png", // expect image
placeholder = "placeholder.png", // display before "normal" be loaded
error = "error.png" // display after "normal" be loaded failed
),
contentDescription = "Example Image",
modifier = Modifier.fillMaxSize(),
contentScale = ContentScale.FillWidth
)
Hmage is released under the MIT License. See LICENSE for details.
The images are used in demo are from flaticon