نمایش گیف های متحرک

GIF های متحرک ارتباطات و بیان خود را تقویت می کنند و عنصری پویا و جذاب به مکالمات اضافه می کنند که به کاربران اجازه می دهد احساسات، واکنش ها و طنز را به طور موثرتری نسبت به تصاویر ثابت یا متن به تنهایی منتقل کنند. محبوبیت GIF ها در فرهنگ آنلاین، یکپارچگی آنها را برای مرتبط ماندن و جذاب ماندن برای کاربرانی که انتظار ویژگی های مدرن و تجربه چند رسانه ای غنی را دارند، ضروری می کند.

نمایش یک GIF متحرک با استفاده از یک کتابخانه بارگذاری تصویر

کتابخانه‌های بارگذاری تصویر کارهای زیادی را برای شما انجام می‌دهند، و اغلب پشتیبانی سازگار با عقب را برای ویژگی‌هایی مانند GIF‌های متحرک اضافه می‌کنند. کد زیر نحوه اجرای پخش متحرک GIF را با استفاده از کتابخانه بارگذاری تصویر Coil نشان می دهد:

وابستگی کویل را برای GIF اضافه کنید:

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

با استفاده از پلتفرم ImageDecoder که در Android 9 (سطح API 28) اضافه شده است، و همچنین با استفاده از GifDecoder Coil's GifDecoder برای سازگاری به عقب ، لودر دارای GIF را ایجاد کنید :

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

از gifEnabledLoader در Coil AsyncImage composable خود استفاده کنید:

AsyncImage(
    imageLoader = gifEnabledLoader,
    ...
)

نمایش یک 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 متحرک را با استفاده از ImageDecoder در AnimatedImageDrawable بارگیری کند:

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

از memoryDrawablePainter با AnimatedImageDrawable استفاده کنید:

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

پشتیبانی از فایل های GIF از صفحه کلیدهای تصویری و سایر محتوای غنی

فایل‌های GIF متحرک ویژگی‌های محبوب بسیاری از صفحه‌کلیدهای اندروید از جمله Gboard از Google هستند. روش پیشنهادی فعلی برای پشتیبانی از هر نوع استیکر یا انیمیشن، چه از روش ورودی یا از یک برنامه دیگر باشد، استفاده از OnReceiveContentListener است.

برای آشنایی بیشتر با نحوه اجرای پشتیبانی برای دریافت انیمیشن‌های GIF و سایر رسانه‌های غنی در برنامه ، به دریافت محتوای غنی رجوع کنید.