عرض صور GIF متحرّكة

تعزز صور GIF المتحركة التواصل والتعبير الذاتي، عنصر جذاب للمحادثات التي تسمح للمستخدمين بنقل العواطف، والتفاعلات والفكاهة بشكل أكثر فعالية من الصور الثابتة أو النصوص وحدها. إن شعبية ملفات GIF في الثقافة على الإنترنت تجعل دمجها أمرًا أساسيًا للحفاظ على اهتمام وجاذبية المستخدمين الذين يتوقعون الحصول على ميزات حديثة تجربة وسائط متعددة تفاعلية.

عرض ملف GIF متحرك باستخدام مكتبة تحميل صور

تبذل مكتبات تحميل الصور الكثير من الأعباء نيابةً عنك، وعادةً ما تضيف دعم متوافق مع الإصدارات القديمة من ميزات مثل صور GIF المتحركة. ما يلي: طريقة تشغيل ملفات GIF المتحركة باستخدام مكتبة تحميل صورة الملف:

إضافة الاعتماد على Coil لملف GIF:

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

إنشاء أداة التحميل التي تدعم GIF باستخدام كل من النظام الأساسي ImageDecoder الذي تمت إضافته في Android 9 (المستوى 28 من واجهة برمجة التطبيقات)، بالإضافة إلى أداة GifDecoder من Coil للتوافق مع الأنظمة القديمة:

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

استخدِم gifEnabledLoader في عنصر Coil AsyncImage القابل للتجميع:

AsyncImage(
    imageLoader = gifEnabledLoader,
    ...
)

عرض صورة GIF متحرّكة باستخدام دعم نظام Android الأساسي

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

يتضمّن الإصدار 9 من نظام التشغيل Android والإصدارات الأحدث (المستوى 28 من واجهة برمجة التطبيقات) ميزة مدمجة تتيح استخدام ملفات GIF المتحركة. وباستخدام مكتبة مرافقة، يمكن لواجهة Jetpack Compose معالجة هذه الصور المتحركة ببضع سطور من الرموز البرمجية فقط.

إضافة الاعتماد على مكتبة Accompanist لتفعيل أدوات الرسم القابلة للرسم:

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

أنشئ طريقة تحمّل صورة GIF المتحركة في AnimatedImageDrawable باستخدام 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 المتحركة من الميزات الشائعة في العديد من لوحات مفاتيح Android، بما في ذلك Gboard من Google. إنّ الطريقة المقترَحة حاليًا لتضمين أي نوع من الملصقات أو الصور المتحركة، سواء كانت من أسلوب الإدخال أو من تطبيق آخر، هي استخدام OnReceiveContentListener.

اطّلِع على مقالة تلقّي محتوى غني للتعرّف على مزيد من المعلومات حول كيفية إتاحة ميزةتلقّي صور GIF المتحركة ووسائط غنية أخرى في تطبيقك.