مصادر الرسوميات المتحركة

الإعلانات

مصادر الرسوميات المتحركة

يمكن لـ” مصادر الرسوميات المتحركة ” تحديد واحد من نوعين من الرسوميات المتحركة:

 

خصائص الرسوميات المتحركة
ينشئ رسوميات متحركة من خلال تعديل قيم خصائص الكائن خلال فترة زمنية محددة مع رسوميات متحركة.

عرض الرسوميات المتحركة
هناك نوعين من الرسوميات المتحركة التي يمكنك إجراؤها بإستخدام إطار عمل عرض الرسوميات المتحركة:

 

 

 

خصائص الرسوميات المتحركة


رسوميات متحركة معرفة في ملف XML الذي يقوم بتعديل خصائص الكائن الهدف، مثل لون الخلفية أو قيمة ألفا (القيمة الأولى)، خلال فترة زمنية محددة.

مكان الملف:

res/animator/filename.xml
سيستخدم اسم الملف كمعرف للمصدر.

جمع أنواع بيانات المصادر:

تشير المصادر إلى ValueAnimator, ObjectAnimator, أو AnimatorSet.

مرجع المصدر:

في الجافا: R.animator.filename.
في XML:

package:]animator/filename]@.

بناء الجملة:

<set
  android:ordering=["together" | "sequentially"]>

    <objectAnimator
        android:propertyName="string"
        android:duration="int"
        android:valueFrom="float | int | color"
        android:valueTo="float | int | color"
        android:startOffset="int"
        android:repeatCount="int"
        android:repeatMode=["repeat" | "reverse"]
        android:valueType=["intType" | "floatType"]/>

    <animator
        android:duration="int"
        android:valueFrom="float | int | color"
        android:valueTo="float | int | color"
        android:startOffset="int"
        android:repeatCount="int"
        android:repeatMode=["repeat" | "reverse"]
        android:valueType=["intType" | "floatType"]/>

    <set>
        ...
    </set>
</set>

 

 

يجب أن يحتوي الملف على عنصر جذر واحد: إما <set> ,  <objectAnimator> أو <valueAnimator>يمكنك جمع عناصر الرسوميات المتحركة معاً داخل عنصر <set>، بما في ذلك عناصر <set> الأخرى.

العناصر:

<set>

هي حاوية تحتوي على عناصر الرسوميات المتحركة الأخرى (<objectAnimator>,و  <valueAnimator>، أو عناصر <set> الأخرى). التي تمثل AnimatorSet.

يمكنك تحديد بنية وسوم <set> لإضافة مجموعات الرسوميات المتحركة معاً. كل <set> يمكنها تحديد سمتها المنظمة.

السمات: android:ordering

كلمة رئيسيه. تخصص ترتيب تشغيل الرسوميات المتحركة في هذه المجموعة.

القيمة الوصف
 التعاقب sequentially  يقوم بتشغيل الحركات في هذه المجموعة بالتعاقب (التسلسل).
معاً (إفتراضي) together   يقوم بتشغيل الحركات في هذه المجموعة في نفس الوقت.

 

<objectAnimator>

الحركة خاصية محددة لكائن خلال فترة زمنية محددة. يمثل ObjectAnimator.

السمات:
android:propertyName

سلسلة. مطلوبة. خاصية الكائن للتحريك، مشار إليها بإسمها.

على سبيل المثال، يمكنك تحديد “بدائي alpha” أو “لون الخلفية backgroundColor” لعرض كائن. لا يكشف عنصر objectAnimator سمة الهدف، ومع ذلك، بالتالي لا يمكنك تعيين الكائن لتحريكه في إعلان ملف XML.

يجب أن تقوم بتضخيم مصدر حركة XML عن طريق إستدعاء ()loadAnimator و إستدعاء ()setTarget لتعيين كائن الهدف الذي يحتوي على هذه الخاصية.

 

android:valueTo

هي متغيرات float، أو int أو color مطلوبة. القيمة التي تنتهي عندها الخاصية المتحركه. يتم تمثيل الألوان كأرقام سداسية عشرية (مثال، اللون #333333).

 

android:valueFrom

هي متغيرات float، أو int أو color. القيمة التي تبدأ عندها الخاصية المتحركه. إذا لم يتم تحديدها، تبدأ الحركة عند القيمة المكتسبة من خلال خاصية “دوال الجلب” get method. يتم تمثيل اللون كأرقارم سداسية عشرية (مثال، اللون #333333).

android:duration

المتغير int. الوقت بالملي ثانيه للحركه. 300 ملي ثانيه هي القيمة الإفتراضية.

 

android:startOffset

المتغير int. مقدار تأخر الحركة بالملي ثانية بعد إستدعاء دالة البدء ()start.

 

android:repeatCount

المتغير int. كم مرة يتم تكرار الحركة. عينها على القيمه “-1” للتكرار اللانهائي أو إلى عدد صحيح موجب.

مثال، القيمه “1” تعني تكرار الحركة مرة واحدة بعد التشغيل الأول للحركة، بحيث يكون مجموع مرات تشغيل الحركة “مرتين”. القيمة الإفتراضية هي “0”، مما يعني عدم التكرار.

android:repeatMode

المتغير int. كيف هو سلوك الحركة عندما تصل إلى نهاية الحركة. android:repeatCount يجب أن يتم تعيينها على عدد صحيح موجب أو على “-1” لهذه السمه لكي يكون لها تأثير.

أضبط القيمة على “reverse” أي معكوس لجعل الحركة في الإتجاه المعاكس مع كل إعادة أو تكرار “repeat” للحصول على حلقة تكرارية “loop” للحركة منذ البدايه في كل مره.

android:valueType

كلمة رئيسيه. لا تحدد هذه السمة لو كانت القيمة لون. يعالج إطار عمل الحركة تلقائياً قيم اللون.

القيمه الوصف
 intType نوع عدد صحيح  يحدد أن القيم المتحركة عبارة عن أعداد صحيحه.
 floatType نوع رقم عائم (إفتراضي)  يحدد أن القيم المتحركة عبارة عن أعداد عائمة أي (أعداد عشريه).

 

<animator>

يؤدي حركة خلال فترة محددة من الزمن. يمثل ValueAnimator.

السمات:

android:valueTo

تأخذ القيم عائم، عدد صحيح، لون. مطلوبه. القيمة التي تنتهي عندها الحركة. يُمثل اللون كألوان سداسية عشرية (مثال: #333333).

android:valueFrom

تأخذ القيم عائم، عدد صحيح، لون. مطلوبه. القيمة التي تبدأ عندها الحركة. يُمثل اللون كألوان سداسية عشرية (مثال:  #333333).

android:duration

تأخذ القيمة عدد صحيح. وقت الحركة بالملي ثانيه. 300 ملي ثانيه هي القيمة الإفتراضية.

android:startOffset

تأخذ القيمة عدد صحيح. مقدار تأخير الحركة بالملي ثانيه، بعد إستدعاء ()start.

android:repeatCount

تأخذ القيمة عدد صحيح. كم مرة يتم تكرار الحركة. تضبط على “-1” للتكرار اللانهائي أو إلى عدد صحيح موجب. كمثال، القيمه “1” تعني أن الحركة تتكرر مرة واحدة بعد التشغيل الأولي للحركة. لذا فإن مجموع حركات الرسومية يكون مرتين. 

القيمة الإفتراضية هي “0”، وهذا يعني عدم التكرار.

 

android:repeatMode

تأخذ القيمة عدد صحيح. كيف تتصرف الحركة عندما تصل إلى نهايتها. يجب تعيين android:repeatCount إلى عدد صحيح موجب أو “-1” لهذه السمة لكي يكون لها تأثير. 

تضبط على عكسي “reverse”، للحصول على إتجاه عكسي للحركة مع كل تكرار. أو تضبط على تكرار “repeat”، للحصول على حلقة تكرارية للحركة منذ البداية في كل مرة.

android:valueType

كلمة رئيسية. لا تقم بتعيين هذه السمة لو كانت القيمة لوناً. إطار الحركة يعالج تلقائياً قيم اللون.

القيمه الوصف
 intType نوع عدد صحيح  يحدد أن القيم المتحركة عبارة عن أعداد صحيحه.
 floatType نوع رقم عائم (إفتراضي) يحدد أن القيم المتحركة عبارة عن أعداد عائمة أي (أعداد عشريه).

 

 

مثال:

ملف XML محفوظ في res/animator/property_animator.xml:

<set android:ordering="sequentially">
    <set>
        <objectAnimator
            android:propertyName="x"
            android:duration="500"
            android:valueTo="400"
            android:valueType="intType"/>
        <objectAnimator
            android:propertyName="y"
            android:duration="500"
            android:valueTo="300"
            android:valueType="intType"/>
    </set>
    <objectAnimator
        android:propertyName="alpha"
        android:duration="500"
        android:valueTo="1f"/>
</set>

 

 

لتشغيل هذه الحركة، يجب عليك تضخيم مصادر XML في الكود الخاص بك إلى كائن ضبط الحركة AnimatorSet، ثم تعيين الكائنات المستهدفه لكافة الحركات قبل بدء تعيين الحركة.

إستدعاء ()setTarget يقوم بتعيين كائن هدف واحد لجميع توابع AnimatorSet كأشياء مناسبة. الكود التالي يوضح كيفية القيام بذلك:

KOTLIN

val set: AnimatorSet = AnimatorInflater.loadAnimator(myContext, R.animator.property_animator)
    .apply {
        setTarget(myObject)
        start()
    }

JAVA

AnimatorSet set = (AnimatorSet) AnimatorInflater.loadAnimator(myContext,
    R.animator.property_animator);
set.setTarget(myObject);
set.start();

 

 

أنظر أيضاً:

  • خصائص الرسوميات المتحركة.
  • عروض واجهة برمجة التطبيقات “API Demos”

 

 

 

 

مصادر الرسوميات المتحركة

 

عرض الرسوميات المتحركة


إطار عمل عرض الرسوميات المتحركة، يدعم كلِ من الرسوميات المتحركة البينيه و المؤطره بإطار الرسوميات المتحركة، واللذين يمكن الإعلان عنهما في ملف XML.

تصف الأقسام التاليه كيفية إستخدام كلا الأسلوبين.

 

الرسوميات المتحركة البينيه

هي رسوميات متحركة معرفة في ملف XML الذي ينفذ عمليات الإنتقال مثل التدوير، التضاؤل، التحرك، والتمدد على الجرافيك.

 

موقع الملف:

res/anim/filename.xml
سيستخدم اسم الملف كمعرف للمصدر.

جمع أنواع بيانات المصادر:

المصادر تشير إلى رسوميات متحركة.

الإشارة إلى مصدر:

في ملف الجافا: R.anim.filename
في ملف XML:

package:]anim/filename]@

بناء الجملة:

<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android"
    android:interpolator="@[package:]anim/interpolator_resource"
    android:shareInterpolator=["true" | "false"] >
    <alpha
        android:fromAlpha="float"
        android:toAlpha="float" />
    <scale
        android:fromXScale="float"
        android:toXScale="float"
        android:fromYScale="float"
        android:toYScale="float"
        android:pivotX="float"
        android:pivotY="float" />
    <translate
        android:fromXDelta="float"
        android:toXDelta="float"
        android:fromYDelta="float"
        android:toYDelta="float" />
    <rotate
        android:fromDegrees="float"
        android:toDegrees="float"
        android:pivotX="float"
        android:pivotY="float" />
    <set>
        ...
    </set>
</set>

 

 

يجب أن يحتوي الملف على عنصر جذر واحد: إما عنصر <alpha> <scale>,

<translate><rotate>، أو <set> و الذي يحمل مجموعة (أو مجموعات) من عناصر الرسوميات المتحركة الأخرى (حتى العناصر المتداخلة من <set>).

العناصر:

<set>

حاوية تحمل عناصر رسوميات متحركة أخرى (<alpha>, <scale>, <translate>, <rotate>) أو عناصر أخرى لـ<set>. تمثل مجموعة الرسوميات المتحركة AnimationSet.

 

السمات:

android:interpolator

مصدر الإقحام. هو إقحام ليتم تطبيقه على الرسوميات المتحركة. يجب أن تكون القيمة مرجعة (مشار إليها) إلى مصدر يحدد الإقحام (وليس إلى اسم فئة الإقحام).

هناك مصادر إقحام إفتراضية متاحة من النظام الأساسي أو يمكنك إنشاء مصدر الإقحام الخاص بك.

أنظر المناقشة أدناه لمزيد من المعلومات عن الإقحام Interpolators.

 

android:shareInterpolator

قيمة منطقية Boolean. تعين على “true” إذا كنت تريد مشاركة نفس الإقحام بين جميع العناصر الفرعية.

 

العنصر <alpha>

حركة تضاؤل داخلي أو تضاؤل خارجي. يمثله AlphaAnimation.

 

السمات:

android:fromAlpha

المتغير Float. بداية العتمة المتوازنه، حيث أن 0.0 شفافه و 1.0 معتمه.

android:toAlpha

المتغير Float. نهاية العتمة المتوازنه، حيث أن 0.0 شفافه و 1.0 معتمه.

لمزيد من السمات المدعومه بواسطة العنصر <alpha>، أنظر مرجع فئة الرسوميات المتحركة (الذي يتم فيه توريث جميع سمات XML بواسطة هذا العنصر).

 

العنصر <scale>

إعادة تحجيم الرسوميات المتحركة. يمكنك تحديد نقطة المركز للصورة التي تنمو منها للخارج (أو الداخل) عن طريق تعيين المحورين X و Y هكذا (pivotX، pivotY).

على سبيل المثال، إذا كانت هذه القيم 0.0 (الزاوية اليسرى العليا)، فسيكون كل النمو لأسفل وإلى اليمين. يمثله ScaleAnimation.

 

السمات:

android:fromXScale

المتغير Float. بداية حجم الإزاحة X، حيث أن القيمه 1.0 تعني بلا تغيير.

android:toXScale

المتغير Float. نهاية حجم الإزاحة X، حيث أن القيمه 1.0 تعني بلا تغيير.

android:fromYScale

المتغير Float. بداية حجم الإزاحة Y، حيث أن القيمه 1.0 تعني بلا تغيير.

android:toYScale

المتغير Float. نهاية حجم الإزاحة Y، حيث أن القيمه 1.0 تعني بلا تغيير.

 

android:pivotX

المتغير Float. الإحداثي X ليبقى ثابتاُ عندما يتم قياس الكائن.

 

android:pivotY

المتغير Float. الإحداثي Y ليبقى ثابتاُ عندما يتم قياس الكائن.

للمزيد من السمات المدعومة بواسطة العنصر <scale>، أنظر مرجع فئة الرسوميات المتحركة (الذي يتم فيه توريث جميع سمات XML بواسطة هذا العنصر).

 

العنصر <translate>

حركة رأسية/ أو أفقيه. يدعم السمات التاليه بأي من الأشكال الثلاثة التاليه: القيم من -100 إلى 100 التي تنتهي بـ”%”، تشير إلى النسبة المئوية نسبة إلى نفسها؛ القيم من -100 إلى 100 والتي تنتهي بـ”%p”، تشير إلى النسبة المئوية نسبة إلى أصلها “parent”؛ قيمة المتغير float بلا لاحقة، يشير إلى قيمة مطلقه. يمثله TranslateAnimation.

السمات:

android:fromXDelta

متغير Float أو نسبة مئوية. بدءاً بحجم الإزاحة X. يعبر عنها إما بـ: البكسل بالنسبة الموضع الطبيعي (مثل “5”)، بالنسبة المئوية نسبة إلى عرض العنصر (مثل “5%”)، أو بالنسب المئوية نسبة إلى عرض الأصل (مثل “5%P) حيث يرمز الحرف P إلى الأصل parent.

 

android:toXDelta

متغير Float أو نسبة مئوية. نهاية بحجم الإزاحة X. يعبر عنها إما بـ: البكسل بالنسبة الموضع الطبيعي (مثل “5”)، بالنسبة المئوية نسبة إلى عرض العنصر (مثل “5%”)، أو بالنسب المئوية نسبة إلى عرض الأصل (مثل “5%P) حيث يرمز الحرف P إلى الأصل parent.

 

android:fromYDelta

متغير Float أو نسبة مئوية. بدءاً بحجم الإزاحة Y. يعبر عنها إما بـ: البكسل بالنسبة الموضع الطبيعي (مثل “5”)، بالنسبة المئوية نسبة إلى إرتفاع العنصر (مثل “5%”)، أو بالنسب المئوية نسبة إلى إرتفاع الأصل (مثل “5%P) حيث يرمز الحرف P إلى الأصل parent.

 

android:toYDelta

متغير Float أو نسبة مئوية. نهاية بحجم الإزاحة Y. يعبر عنها إما بـ: البكسل بالنسبة الموضع الطبيعي (مثل “5”)، بالنسبة المئوية نسبة إلى إرتفاع العنصر (مثل “5%”)، أو بالنسب المئوية نسبة إلى إرتفاع الأصل (مثل “5%P) حيث يرمز الحرف P إلى الأصل parent.

لمزيد من السمات المدعومة بواسطة العنصر <translate>، أنظر مرجع فئة الرسوميات المتحركة (الذي يتم فيه توريث جميع سمات XML بواسطة هذا العنصر).

 

العنصر <rotate>

تدوير الرسوميات المتحركة. يمثله RotateAnimation.

السمات:

android:fromDegrees

المتغير Float. بدءاً بموضع الزاوية، بالدرجات.

android:toDegrees

المتغير Float. نهاية بموضع الزاوية، بالدرجات.

android:pivotX

المتغير Float أو النسبة المئوية. الإحداثي X في مركز الدوران. يعبر عنه إما بـ: بالبكسل بالنسبة إلى الحافة اليسرى للكائن (مثل “5”)، بالنسبة المئوية نسبة إلى الحافة اليسرى للكائن (مثل “5%”)، أو بالنسبة المئوية للحافة اليسرى للحاوية الأصل (مثل “5%P”)حيث يرمز الحرف P إلى الأصل parent.

 

android:pivotY

المتغير Float أو النسبة المئوية. الإحداثي Y في مركز الدوران. يعبر عنه إما بـ:

بالبكسل بالنسبة إلى الحافة العليا للكائن (مثل “5”)، بالنسبة المئوية نسبة إلى الحافة العليا للكائن (مثل “5%”)، أو بالنسبة المئوية للحافة العليا للحاوية الأصل (مثل “5%P”)حيث يرمز الحرف P إلى الأصل parent.

لمزيد من السمات المدعومة بواسطة العنصر <rotate>، أنظر مرجع فئة الرسوميات المتحركة (الذي يتم فيه توريث جميع سمات XML بواسطة هذا العنصر).

مثال:

ملف XML محفوظ في res/anim/hyperspace_jump.xml:

<set xmlns:android="http://schemas.android.com/apk/res/android"
    android:shareInterpolator="false">
    <scale
        android:interpolator="@android:anim/accelerate_decelerate_interpolator"
        android:fromXScale="1.0"
        android:toXScale="1.4"
        android:fromYScale="1.0"
        android:toYScale="0.6"
        android:pivotX="50%"
        android:pivotY="50%"
        android:fillAfter="false"
        android:duration="700" />
    <set
        android:interpolator="@android:anim/accelerate_interpolator"
        android:startOffset="700">
        <scale
            android:fromXScale="1.4"
            android:toXScale="0.0"
            android:fromYScale="0.6"
            android:toYScale="0.0"
            android:pivotX="50%"
            android:pivotY="50%"
            android:duration="400" />
        <rotate
            android:fromDegrees="0"
            android:toDegrees="-45"
            android:toYScale="0.0"
            android:pivotX="50%"
            android:pivotY="50%"
            android:duration="400" />
    </set>
</set>

 

 

يقوم كود التطبيق هذا بتطبيق الحركة على ImageView ثم يبدأ الحركة:

 KOTLIN

val image: ImageView = findViewById(R.id.image)
val hyperspaceJump: Animation = AnimationUtils.loadAnimation(this, R.anim.hyperspace_jump)
image.startAnimation(hyperspaceJump)

 JAVA

ImageView image = (ImageView) findViewById(R.id.image);
Animation hyperspaceJump = AnimationUtils.loadAnimation(this, R.anim.hyperspace_jump);
image.startAnimation(hyperspaceJump);

 

أنظر أيضاً:

  • الجرافيك ثنائية الأبعاد: الرسوميات المتحركة البينيه.

 

 

 

 

 

مصادر الرسوميات المتحركة

 

الإقحام Interpolators


يعتبر الإقحام رسوميات متحركة معدلة تم تعريفها في ملف XML والذي يؤثر على معدل التغيير في الحركة. يسمح هذا بتسريع تأثير الحركات الحاليه، أو إبطائها، أو تكرارها، أو إرتدادها، ألخ.

يتم تطبيق الإقحام على عنصر الحركة لدى سمة android:interpolator القيمة التي تمثل مرجعاً لمصدر الإقحام.

جميع الإقحامات المتاحة في نظام الأندرويد، هي فئات فرعية للفئة إقحام. لكل فئة إقحام يقوم الأندرويد، بتضمين مصدراً عاماً يمكنك الرجوع إليه.

من أجل تطبيق الإقحام على الحركة بإستخدام السمه android:interpolator. الجدول التالي يحدد المصدر الذي يمكن إستخدامه لكل إقحام.

 

فئة الإقحام Interpolator Class معرف المصدر Resource ID
 تسريع تباطؤ الإقحام
AccelerateDecelerateInterpolator
@ android:anim/accelerate_decelerate_interpolator
 تسريع الإقحام
AccelerateInterpolator
 android:anim/accelerate_interpolator@
 توقع الإقحام
AnticipateInterpolator
 android:anim/anticipate_interpolator@
 توقع تجاوز الإقحام
AnticipateOvershootInterpolator
 android:anim/anticipate_overshoot_interpolator@
 إرتداد الإقحام
BounceInterpolator
 android:anim/bounce_interpolator@
 دورة الإقحام
CycleInterpolator
android:anim/cycle_interpolator@
 تباطؤ الإقحام
DecelerateInterpolator
 
 android:anim/decelerate_interpolator@
 الإقحام الخطي
LinearInterpolator
 android:anim/linear_interpolator@
 تجاوز الإقحام
OvershootInterpolator
 android:anim/overshoot_interpolator@

 

فيما يلي كيفية تطبيق إحدى هذه بإستخدام السمه android:interpolator:

<set android:interpolator="@android:anim/accelerate_interpolator">
    ...
</set>

 

 

 

 

 

مصادر الرسوميات المتحركة

تخصيص الإقحام


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

على سبيل المثال، يمكنك ضبط معدل التسارع لإستباق الإقحام AnticipateInterpolator، أو ضبط عدد دورات “دورات الإقحام” CycleInterpolator.

للقيام بذلك، تحتاج إلى إنشاء مصدر إقحام خاص بك في ملف XML.

 

مكان الملف:

res/anim/filename.xml
يستخدم اسم الملف كمعرف للمصدر.

جمع مصادر نوع البيانات:

مصادر تشير إلى كائن الإقحام المطابق.

مرجع المصدر:

في ملف XML:

package:]anim/filename]@

بناء الجمله:

<?xml version="1.0" encoding="utf-8"?>
<InterpolatorName xmlns:android="http://schemas.android.com/apk/res/android"
    android:attribute_name="value"
    />

 

 

إذا لم تقم بتطبيق أي سمات، فإن إقحامك سيعمل تماماً كتلك التي توفرها المنصه (المدرجة في الجدول أعلاه).

العناصر:

لاحظ أن كل إقحام يطبق، عند تعريفه في ملف XML، و يبدأ اسمه بأحرف صغيرة.

 

<accelerateDecelerateInterpolator>

معدل التغير يبدأ وينتهي ببطء ولكنه يتسارع في المنتصف.

لا يوجد له سمات.

 

<accelerateInterpolator>

يبدأ معدل التغير ببطء ثم يتسارع.

السمات: android:factor

المتغير Float. معدل التسارع (القيمة الإفتراضية هي 1).

 

<anticipateInterpolator>

يبدأ التغيير في الخلف ثم يندفع للأمام.

السمات: android:tension

المتغير Float. كمية الضغط المراد تطبيقه (القيمة الإفتراضية هي 2).

 

<anticipateOvershootInterpolator>

يبدأ التغيير في الخلف ثم يندفع للأمام ويجتاز القيمة المستهدفه، ثم يستقر عند القيمة النهائية.

السمات: android:tension

المتغير Float. كمية الضغط المراد تطبيقه (القيمة الإفتراضية هي 2).

 

android:extraTension

المتغير Float. الكمية التي تضاعف الضغط (القيمة الإفتراضية هي 1.5).

 

<bounceInterpolator>

التغير يرتد في النهايه. لا يوجد سمات له.

<cycleInterpolator>

تكرار الحركة لعدد معين من الدورات. معدل التغيير يتبع النمط الجيبي.

السمات: android:cycles

تمثل بالمتغير عدد صحيح. عدد الدورات (القيمة الإفتراضية هي 1).

 

<decelerateInterpolator>

يبدأ معدل التغيير بسرعة ثم يتباطأ.

 

السمات: android:factor

تمثل بالمتغير Float. معدل التباطؤ (القيمة الإفتراضية هي 1).

 

<linearInterpolator>

معدل التغير ثابت. لا يوجد له سمات.

<overshootInterpolator>

يندفع التغير للأمام و يجتاز القيمة الأخيرة، ثم يعود.

السمات: android:tension

يمثل بالمتغير Float. كمية الضغط المراد تطبيقها (القيمة الإفتراضية هي 2).

مثال:

ملف XML محفوظ في res/anim/my_overshoot_interpolator.xml:

<?xml version="1.0" encoding="utf-8"?>
<overshootInterpolator xmlns:android="http://schemas.android.com/apk/res/android"
    android:tension="7.0"
    />

ملف الرسوميات المتحركة XML هذا سيطبق الإقحام:

<scale xmlns:android="http://schemas.android.com/apk/res/android"
    android:interpolator="@anim/my_overshoot_interpolator"
    android:fromXScale="1.0"
    android:toXScale="3.0"
    android:fromYScale="1.0"
    android:toYScale="3.0"
    android:pivotX="50%"
    android:pivotY="50%"
    android:duration="700" />

 

 

 

 

مصادر الرسوميات المتحركة

 

الرسوميات المتحركة المؤطره


رسوميات متحركة معرفة في ملف XML الذي يعرض سلسلة متتابعة من الصور بالترتيب (كـ فيلم):

مكان الملف:

res/drawable/filename.xml
اسم الملف سيستخدم كمعرف للمصدر.

جمع مصادر أنواع البيانات:

المصادر تشير إلى AnimationDrawable.

الإشارة للمصدر:

في كود الجافا: R.drawable.filename.
في ملف XML:

package:]drawable.filename]@.

 

بناء الجملة:

<?xml version="1.0" encoding="utf-8"?>
<animation-list xmlns:android="http://schemas.android.com/apk/res/android"
    android:oneshot=["true" | "false"] >
    <item
        android:drawable="@[package:]drawable/drawable_resource_name"
        android:duration="integer" />
</animation-list>

 

مصادر الرسوميات المتحركة

العناصر:

<animation-list>

مطلوب. لابد أن يكون هذا هو العنصر الجذر (الأساسي). يحتوي على واحد أو أكثر من عناصر <item>.

السمات: android:oneshot

تمثل بمتغير قيمة منطقية Boolean. تعين على “true” إذا كنت تريد تنفيذ الحركة مرة واحده؛ و “false” لتكرار الحركة.

 

<item>

إطار واحد للحركة. يجب أن يكون تابع لعنصر <animation-list>.

السمات: android:drawable

مصدر رسوميات. الرسوميات لتستخدم لهذا الإطار.

 

android:duration

تمثل بعدد صحيح. مدة عرض هذا الإطار بالملي ثانيه.

مثال:

ملف XML محفوظ في res/drawable/rocket.xml:

<?xml version="1.0" encoding="utf-8"?>
<animation-list xmlns:android="http://schemas.android.com/apk/res/android"
    android:oneshot="false">
    <item android:drawable="@drawable/rocket_thrust1" android:duration="200" />
    <item android:drawable="@drawable/rocket_thrust2" android:duration="200" />
    <item android:drawable="@drawable/rocket_thrust3" android:duration="200" />
</animation-list>

 

 

سيعمل كود التطبيق هذا على تعيين الحركة كخلفية للعرض، ثم يقوم بتشغيل الحركة:

KOTLIN

val rocketImage: ImageView = findViewById(R.id.rocket_image)
rocketImage.setBackgroundResource(R.drawable.rocket_thrust)

val rocketAnimation = rocketImage.background
if (rocketAnimation is Animatable) {
    rocketAnimation.start()
}

JAVA

ImageView rocketImage = (ImageView) findViewById(R.id.rocket_image);
rocketImage.setBackgroundResource(R.drawable.rocket_thrust);

rocketAnimation = rocketImage.getBackground();
if (rocketAnimation instanceof Animatable) {
    ((Animatable)rocketAnimation).start();
}

 

يمكنك أيضاً الإطلاع على:

  • الجرافيك ثنائية الأبعاد: إطار الرسوميات المتحركة.  

 


للإطلاع على المقال باللغة الإنجليزية أضغط هنا.

الإعلانات