الرسوم المتحركة في تطوير الجوال: ما هي، أنواعها وكيفية استخدامها

المؤلف: IT Sectr نُشر: 2026-02-26 وقت القراءة: 10 دق

الرسوم المتحركة في تطبيقات الجوال تجعلها حية ومستجيبة، وتوجه انتباه المستخدم وتحسن إدراك الواجهة. في هذه المقالة سنغطي الأنواع الرئيسية للرسوم المتحركة في iOS و Android: Property Animation و View Animation و UIKit Dynamics و Core Animation و Lottie و Rive و Spring Animation و Hero Animation و Shared Element Transition. ستساعد المادة المطورين المبتدئين على فهم الأدوات والمكتبات التي يجب اختيارها لمهمة محددة. لمزيد من التفاصيل — في الوثائق الرسمية لـ Android Animations.

النقاط الرئيسية

  • Property Animation (Android) تغير خصائص الكائن الحقيقية، View Animation — فقط التمثيل البصري
  • Core Animation و UIView.animate (iOS) توفر إمكانيات مدمجة لتحريك الطبقات وطرق العرض
  • Lottie و Rive تسمحان بتضمين الرسوم المتحركة المتجهة المعقدة من After Effects و Rive Editor
  • Hero Animation (Shared Element Transition) تنشئ انتقالات سلسة بين الشاشات
  • Spring Animation مع فيزياء الزنبرك و Easing (Interpolator) تجعل الرسوم المتحركة طبيعية

الرسوم المتحركة في Android: Property Animation و View Animation

يوفر Android نظامين رئيسيين للرسوم المتحركة: View Animation (قديم) و Property Animation (حديث). View Animation (أو Tween Animation) تعمل فقط مع التمثيل البصري — تغير عرض العرض ولكن ليس خصائصه الفعلية (على سبيل المثال، تبقى إحداثيات النقر في مكانها). Property Animation، التي تم تقديمها في Android 3.0، تغير خصائص الكائن الحقيقية من خلال Animator — ValueAnimator أو ObjectAnimator أو AnimatorSet.

ObjectAnimator و ValueAnimator

ObjectAnimator هو الفئة الأكثر شيوعًا في Property Animation. يقوم بتحريك خاصية معينة للكائن (مثل translationX و alpha و scaleY) لفترة زمنية محددة باستخدام Interpolator معين.

kotlin
ObjectAnimator.ofFloat(myView, "translationX", 0f, 300f).apply {
    duration = 500
    interpolator = FastOutSlowInInterpolator()
    startDelay = 200
}.start()

ValueAnimator غير مرتبط بكائن معين — يقوم بتوليد قيم يمكن استخدامها لأي خاصية أو منطق مخصص.

View Animation ورسوم XML المتحركة

View Animation موصوفة في ملفات XML res/anim/. يتم دعم أربعة أنواع: scale و translate و rotate و alpha. العيب هو أن الرسوم المتحركة لا تغير معلمات العرض الفعلية. للتأثيرات البسيطة (الوميض، التدوير) لا تزال View Animation قابلة للتطبيق،但对于 المشاريع الجديدة، يوصى باستخدام Property Animation.

الرسوم المتحركة في Jetpack Compose

يقدم Jetpack Compose واجهة برمجة تطبيقات حديثة للرسوم المتحركة: animateAsState و Animatable و AnimatedVisibility و AnimatedContent. الرسوم المتحركة في Compose تفاعلية: عندما تتغير الحالة، تبدأ الرسوم المتحركة تلقائيًا.

kotlin
var expanded = remember { mutableStateOf(false) }
val size = animateAsState(
    if (expanded) 200f else 50f
)
Box(
    modifier = Modifier
        .size(size.value, size.value)
        .clickable { expanded = !expanded }
        .background(Color.Blue)
)

الرسوم المتحركة في iOS: Core Animation و UIView.animate

يوفر iOS مجموعة رسوم متحركة قوية تعتمد على Core Animation — إطار عمل منخفض المستوى يعمل مع CALayer. UIKit مبني فوق Core Animation مع طرق UIView.animate و UIViewPropertyAnimator المريحة.

UIView.animate

UIView.animate هي أبسط طريقة للرسوم المتحركة في iOS. تسمح بتحريك frame و alpha و transform و backgroundColor وخصائص UIView الأخرى.

swift
UIView.animate(
    withDuration: 0.5,
    delay: 0.2,
    usingSpringWithDamping: 0.6,
    initialSpringVelocity: 1.0,
    options: [.curveEaseInOut]
) {
    myView.frame.origin.x += 300
    myView.alpha = 0.5
}

UIKit Dynamics

UIKit Dynamics — إطار عمل للرسوم المتحركة الفيزيائية: الجاذبية، التصادمات، الزنبركات، قوى الجذب. يسمح بإنشاء سلوك واقعي للكائنات بدون حساب يدوي للفيزياء. يستخدم للانتقالات المخصصة والقوائم المتحركة وعناصر اللعبة.

CAAnimation و Core Animation

Core Animation (CAAnimation، CABasicAnimation، CAKeyframeAnimation) — واجهة برمجة تطبيقات منخفضة المستوى للرسوم المتحركة لـ CALayer. تدعم التحولات ثلاثية الأبعاد، والرسوم المتحركة للمسار (keyframe)، والإخفاء والتركيب. يستخدم SwiftUI Core Animation تحت الغطاء من خلال معدّلات animation و withAnimation.

swift
let animation = CABasicAnimation(keyPath: "transform.rotation.z")
animation.fromValue = 0
animation.toValue = CGFloat.pi * 2
animation.duration = 1.0
animation.repeatCount = .infinity
myLayer.add(animation, forKey: "rotation")

بالنسبة لمعظم مشاريع iOS، يتم استخدام SwiftUI مع رسومه المتحركة المدمجة. على سبيل المثال، withAnimation يغلف تغييرات الحالة في سياق متحرك.

الرسوم المتحركة المتجهة: Lottie و Rive

من الصعب تنفيذ الرسوم المتحركة المعقدة (الشخصيات، الانتقالات، أدوات التحميل) بالكود. Lottie و Rive تحل هذه المشكلة من خلال السماح للمصممين بإنشاء رسوم متحركة في المحررات المرئية والمطورين بتضمينها في التطبيق كمكون جاهز.

Lottie

Lottie — مكتبة من Airbnb (الآن LottieFiles) تقوم بعرض الرسوم المتحركة من Adobe After Effects المصدرة بتنسيق JSON. مدعومة على Android و iOS و Flutter و React Native والويب. رسوم Lottie المتحركة متجهة، وتتدرج دون فقدان الجودة ويمكن تخصيصها برمجيًا (السرعة، التقدم، الألوان).

kotlin
// Android
import com.airbnb.lottie.LottieAnimationView
val lottieView = findViewById<LottieAnimationView>(R.id.lottieView)
lottieView.setAnimation(R.raw.loading_animation)
lottieView.playAnimation()

Rive

Rive (سابقًا 2Dimensions) — أداة أكثر تقدمًا للرسوم المتحركة المتجهة. على عكس Lottie، يدعم Rive الرسوم المتحركة التفاعلية: الحالات، المشغلات، الانتقالات. يتم إنشاء الرسوم المتحركة في Rive Editor والتحكم فيها في التطبيق من خلال State Machine. Rive مناسب لواجهات الألعاب والأيقونات المتحركة والانتقالات المعقدة مع ردود الفعل.

في IT Sectr نستخدم Lottie للرسوم المتحركة الزخرفية (أدوات التحميل، العمليات الناجحة، الحالات الفارغة) و Rive للعناصر التفاعلية لشاشات الإعداد. هذا يقلل وقت تطوير الرسوم المتحركة بنسبة 60% مقارنة بالتنفيذ اليدوي على UIKit أو Canvas.

Shared Element Transition و Hero Animation

Shared Element Transition — رسم متحرك حيث يتحرك عنصر (صورة، نص، بطاقة) ويتحول بسلاسة عند الانتقال بين الشاشات. هذا يخلق وهم الاستمرارية: المستخدم لا "يذهب" إلى شاشة جديدة، بل "يسقط" في العنصر.

Android Shared Element Transition

في Android، يتم تنفيذ الانتقال من خلال ActivityOptionsCompat وسمات transitionName. يدعم FragmentTransaction addSharedElement للانتقالات داخل النشاط. يستخدم Compose SharedTransitionLayout مع SharedContentState.

iOS Hero Transition

iOS لا يحتوي على Hero Transition مدمج، لكن مكتبة Hero (بواسطة Luke Zhao) تنفذ هذا النمط على UIKit. ببساطة قم بتعيين معرف للعناصر على كلتا الشاشتين — سيقوم Hero تلقائيًا بإنشاء انتقال سلس. في SwiftUI، رسوم الانتقال المتحركة مدمجة من خلال NavigationStack و matchedGeometryEffect.

Flutter Hero

يحتوي Flutter على عنصر واجهة Hero مدمج مع معلمة tag. عندما تحتوي صفحتان على Hero بنفس tag، يقوم Flutter تلقائيًا بتحريك الانتقال بينهما. هذه واحدة من أبسط الطرق لتنفيذ الرسوم المتحركة المعقدة في تطبيق جوال.

dart
Hero(
    tag: 'profile_avatar',
    child: CircleAvatar(
        backgroundImage: AssetImage('avatar.jpg'),
        radius: 50,
    ),
)

Spring Animation و Interpolator و Easing

لجعل الرسوم المتحركة تبدو طبيعية، يتم استخدام منحنيات السرعة — Interpolator في Android و Easing في iOS. تحدد هذه كيف تتغير سرعة الرسوم المتحركة من البداية إلى النهاية.

مُقحمات Android

يدعم Android العديد من المُقحمات المدمجة: LinearInterpolator (منتظم)، AccelerateDecelerateInterpolator (بطيء-سريع-بطيء)، FastOutSlowInInterpolator (Material Design)، OvershootInterpolator (مع تجاوز) و BounceInterpolator (مع ارتداد). يمكن إنشاء مُقحم مخصص من خلال XML أو فئة TimeInterpolator.

Interpolator السلوك الاستخدام
LinearInterpolatorسرعة ثابتةمؤشرات التحميل، الدوران اللانهائي
FastOutSlowInInterpolatorبداية سريعة، نهاية سلسةMaterial Design، ظهور البطاقات
OvershootInterpolatorيتجاوز الهدف ويعودعناصر التأكيد، الأزرار
BounceInterpolatorارتداد في النهايةالقوائم، السحب للتحديث

Spring Animation

Spring Animation (رسوم الزنبرك المتحركة) تصمم فيزياء الزنبرك مع معلمات التخميد (damping) والصلابة (stiffness). التخميد 0 — تذبذبات لا نهائية، 1 — بدون تذبذبات. الصلابة تحدد سرعة العودة. Spring Animation متاحة في iOS (UIViewPropertyAnimator مع UISpringTimingParameters)، Android (SpringAnimation من physics2) و SwiftUI (spring()).

وثائق Spring Animation في Android تحتوي على أمثلة تكوين مفصلة.

رسوم الجدول الزمني المتحركة

Timeline (الجدول الزمني) — نهج يتم فيه تقسيم الرسوم المتحركة إلى إطارات بمرور الوقت. يستخدم للتسلسلات المعقدة حيث تكون AnimationSet أو الرسوم المتحركة الجماعية غير مرنة بما فيه الكفاية. يدعم Android AnimatorSet، و iOS — CAAnimationGroup، و Flutter — Interval في AnimationController.

Часто задаваемые вопросы

كيف تختلف Property Animation عن View Animation؟

View Animation (Android) تغير فقط العرض المرئي لعرض بدون تغيير الخصائص الحقيقية (موضع النقر لا يتغير). Property Animation تغير خصائص الكائن الفعلية، مما يوفر سلوكًا أكثر مرونة وقابلية للتنبؤ. للمشاريع الجديدة، استخدم دائمًا Property Animation.

ما هي Hero Animation؟

Hero Animation هي رسم متحرك حيث يتحرك عنصر ويتحول بسلاسة عند الانتقال بين الشاشات، مما يخلق وهم الاستمرارية. يتم تنفيذها من خلال Hero (Flutter) أو SharedElementTransition (Android) أو matchedGeometryEffect (SwiftUI).

لما نحتاج Lottie و Rive؟

Lottie و Rive هما مكتبتان لعرض الرسوم المتحركة المتجهة في وقت التشغيل. يقوم المصمم بإنشاء الرسم المتحرك في After Effects (Lottie) أو Rive Editor، ويصدره إلى JSON، ويقوم المطور بتضمينه دون كتابة كود الرسوم المتحركة يدويًا.

ما هي Spring Animation ولماذا هي مفيدة؟

Spring Animation تصمم فيزياء الزنبرك: الرسم المتحرك له تخميد طبيعي و"ارتداد". يدعم SwiftUI و Jetpack Compose الرسوم المتحركة spring مباشرة، مما يجعل الواجهة أكثر حيوية واستجابة.

كيف أختار Interpolator المناسب؟

الاختيار يعتمد على السياق: FastOutSlowIn — لظهور العناصر، Overshoot — للتأكيد، Linear — لمؤشرات التحميل، Bounce — للقوائم. يوصي Material Design بمنحنيات قياسية: standard easing و deceleration easing و acceleration easing.

الملخص

  • Property Animation (Android ObjectAnimator) — معيار حديث يحل محل View Animation
  • iOS يستخدم UIView.animate و Core Animation للتحكم في الرسوم المتحركة على مستوى الطبقات
  • Lottie و Rive تبسطان تضمين الرسوم المتحركة المتجهة المعقدة من أدوات التصميم
  • Hero Animation (Shared Element Transition) يحسن إدراك التنقل بين الشاشات
  • Spring Animation والاختيار الصحيح لـ Interpolator / Easing يجعلان الرسوم المتحركة طبيعية
  • يوفر Flutter عنصر واجهة Hero مدمج للانتقالات و AnimationController للرسوم المتحركة المخصصة
  • Jetpack Compose و SwiftUI يحتويان على رسوم متحركة تفاعلية مدمجة من خلال animateAsState و withAnimation

سنقوم بتطوير تطبيق جوال جاهز

تقدم IT Sectr تطبيقات iOS وAndroid للشركات الناشئة والشركات منذ عام 2017. سوف نقدم لك النصح ونقترح أفضل حل.

مناقشة المشروع