애니메이션 GIF 표시

애니메이션 GIF는 생생하고 역동적인 느낌을 더하면서 소통과 자기 표현을 대화에 사용자의 감정을 전달할 수 있는 흥미로운 요소 정적인 이미지나 텍스트만 사용하는 것보다 더 효과적으로 리액션을 할 수 있고 유머를 더 효과적으로 사용할 수 있습니다. 온라인 문화에서 GIF의 인기는 GIF의 통합을 필수 요소로 만듭니다. 최신 기능과 최신 기능을 기대하는 사용자에게 관련성 높고 관심을 끌 수 있도록 풍부한 멀티미디어 환경을 제공합니다.

이미지 로드 라이브러리를 사용하여 애니메이션 GIF 표시

이미지 로드 라이브러리는 많은 까다로운 작업을 처리하며, 애니메이션 GIF와 같은 기능에 이전 버전과 호환되는 지원을 추가하는 경우가 많습니다. 다음 코드는 Coil 이미지 로드 라이브러리를 사용하여 애니메이션 GIF 재생을 구현하는 방법을 보여줍니다.

GIF의 Coil 종속 항목을 추가합니다.

implementation("io.coil-kt:coil-gif:2.6.0")

추가된 플랫폼 ImageDecoder를 모두 사용하여 GIF 지원 로더를 생성합니다. 이전 버전과의 호환성을 위해 Coil의 GifDecoder는 물론 Android 9 (API 수준 28)에도 적용되었습니다.

val gifEnabledLoader = ImageLoader.Builder(this)
    .components {
        if ( SDK_INT >= 28 ) {
            add(ImageDecoderDecoder.Factory())
        } else {
            add(GifDecoder.Factory())
        }
    }.build()

Coil AsyncImage 컴포저블에서 gifEnabledLoader를 사용합니다.

AsyncImage(
    imageLoader = gifEnabledLoader,
    ...
)

Android 플랫폼 지원을 사용하여 애니메이션 GIF 표시

AsyncImage(
     model = request,
     imageLoader = videoEnabledLoader,
     contentDescription = null
 )

Android 9 이상(API 수준 28)에서는 애니메이션 GIF 파일을 기본적으로 지원합니다. 이 Accompanist 라이브러리의 도움을 받아 Jetpack Compose는 애니메이션을 재생할 수 있습니다.

드로어블 페인터를 지원하도록 Accompanist 라이브러리 종속 항목을 추가합니다.

implementation("com.google.accompanist:accompanist-drawablepainter:0.35.0-alpha")

애니메이션 GIF를 로드하는 메서드animateImageDrawable로 만듭니다. 다음과 같이 ImageDecoder를 사용합니다.

private fun createAnimatedImageDrawableFromImageDecoder(context: Context, uri: Uri): AnimatedImageDrawable {
    val source = ImageDecoder.createSource(context.contentResolver, uri)
    val drawable = ImageDecoder.decodeDrawable(source)
    return drawable as AnimatedImageDrawable
}

rememberDrawablePainter AnimatedImageDrawable:

Image(
    painter = rememberDrawablePainter(
        drawable = createAnimatedImageDrawableFromImageDecoder(applicationContext, mediaUri)),
     contentDescription = "animated gif"
)

이미지 키보드 및 기타 리치 콘텐츠의 GIF 파일 지원

애니메이션 GIF 파일은 Google의 Gboard를 비롯한 많은 Android 키보드에서 인기 있는 기능입니다. 모든 종류의 스티커 또는 애니메이션의 출처인지 여부 앱에서 OnReceiveContentListener를 사용하는 것입니다.

다음에 대한 지원을 구현하는 방법에 대해 자세히 알아보려면 리치 콘텐츠 받기를 참조하세요. 앱에 GIF 애니메이션 및 기타 리치 미디어 수신