2024. 1. 3. 16:54ㆍAndroid
android compose로 gif 이미지를 넣는 것은 처음이다. 먼저 관련 라이브러리를 찾았다.
스택 오버 플로우에서 찾아 본 바로 coil이라는 라이브러리를 사용하면 되는 것 같다.
implementation "io.coil-kt:coil-compose:2.1.0"
implementation "io.coil-kt:coil-gif:2.1.0"
위 라이브러리의 최신 버전을 찾아보니, 2024년 1월 기준 해당 라이브러리 공식 깃헙 문서에 다음과 같이 나와 있었다.
Jetpack Compose
Import the Jetpack Compose extension library:
implementation("io.coil-kt:coil-compose:2.5.0")
Gifs
Unlike Glide, GIFs are not supported by default. However, Coil has an extension library to support them.
To add GIF support, import the extension library:
implementation("io.coil-kt:coil-gif:2.5.0")
따라서 최신 버전인 2.5.0으로 build.gradle(app)에 추가해 준다.
그레이들 파일 변경 후 sync를 맞춰서 에러가 안 나는지 확인했다면,
공식 문서의 Quick Start 가이드를 훑어보자.
공식 문서에 나와있던 코드 예제와 스택 오버 플로우에 있는 예제가 일치했기 때문에,
좀 더 활용하기 쉬운 형태의 코드를 선택해서 쓸 것이다.
아까 스택 오버 플로우에 있던 코드를 복붙에 쓰기 좋은 형태로 살짝 변경해서 활용해 보자.
나는 다음과 같은 뷰를 만들었다.
@Composable
fun GifImage(
modifier: Modifier = Modifier,
drawableId: Int,
) {
val context = LocalContext.current
val imageLoader = ImageLoader.Builder(context)
.components {
if (SDK_INT >= 28) {
add(ImageDecoderDecoder.Factory())
} else {
add(GifDecoder.Factory())
}
}
.build()
Image(
painter = rememberAsyncImagePainter(
ImageRequest.Builder(context).data(data = drawableId).apply(block = {
size(Size.ORIGINAL)
}).build(), imageLoader = imageLoader
),
contentDescription = null,
modifier = modifier.fillMaxWidth(),
)
}
위 GifImage 컴포넌트의 사용 예시는 아래와 같다.
@Composable
fun GuideView360() {
Column() {
GifImage(drawableId = R.drawable.play_guide_360_video)
AlignCenterText(text = "360도 VR 영상을 재생하기 위해")
Row(modifier = Modifier.align(Alignment.CenterHorizontally)) {
Text(text = "스마트폰을 ")
Text(text = "반시계 방향으로", color= VroadwayColors.primaryVariant)
}
AlignCenterText(text = " 기울여 주세요")
Spacer(modifier = Modifier.height(80.dp))
}
}
결과 화면)
참고)
https://stackoverflow.com/questions/60229555/adding-gif-into-jetpack-compose
Adding gif into Jetpack Compose
I have a gif that I would like to place into my app. I know how to insert image resources, but when I try adding the gif it becomes a static image. DrawImage(image = +imageResource(R.drawable.gif)...
stackoverflow.com
https://github.com/coil-kt/coil
GitHub - coil-kt/coil: Image loading for Android and Compose Multiplatform.
Image loading for Android and Compose Multiplatform. - GitHub - coil-kt/coil: Image loading for Android and Compose Multiplatform.
github.com
https://github.com/coil-kt/coil/tree/main/coil-gif
'Android' 카테고리의 다른 글
Android DI 라이브러리 Dagger-Hilt 소개와 사용법 (1) | 2024.01.05 |
---|---|
Android DI(Dependency Injection) (0) | 2024.01.05 |
[Android] MediaBrowserServiceCompat이용하여 MediaButtonClickEvent 구현 (feat. AudioFocus받아오기) (0) | 2022.08.17 |
[Android] MediaBrowserServiceCompat 이용하여 Bluetooth Earbuds Button Click Event 받기 (0) | 2022.06.27 |
[Kotlin] Android에서 Kotlin과 JAVA연결 (0) | 2022.01.24 |