منابع انیمیشن

یک منبع انیمیشن می تواند یکی از دو نوع انیمیشن را تعریف کند:

انیمیشن اموال
یک انیمیشن را با تغییر مقادیر ویژگی یک شی در یک دوره تعیین شده با Animator ایجاد می کند.
مشاهده انیمیشن

دو نوع انیمیشن وجود دارد که می توانید با چارچوب انیمیشن view انجام دهید:

انیمیشن اموال

یک انیمیشن تعریف شده در 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=["restart" | "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=["restart" | "reverse"]
        android:valueType=["intType" | "floatType"]/>

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

فایل باید یک عنصر ریشه داشته باشد: یا <set> ، <objectAnimator> ، یا <valueAnimator> . می توانید عناصر انیمیشن را در داخل عنصر <set> ، از جمله سایر عناصر <set> ، گروه بندی کنید.

عناصر:
<set>
ظرفی که سایر عناصر انیمیشن ( <objectAnimator> ، <valueAnimator> یا سایر عناصر <set> ) را در خود جای می دهد. یک AnimatorSet را نشان می دهد.

می‌توانید تگ‌های <set> تودرتو را برای گروه‌بندی بیشتر انیمیشن‌ها مشخص کنید. هر <set> می تواند صفت ordering خود را تعریف کند.

ویژگی ها:

android:ordering
کلمه کلیدی ترتیب پخش انیمیشن های این مجموعه را مشخص می کند.
ارزش توضیحات
sequentially انیمیشن ها را در این مجموعه به صورت متوالی پخش کنید.
together (پیش فرض) در این مجموعه انیمیشن ها را همزمان پخش کنید.
<objectAnimator>
یک ویژگی خاص از یک شی را در مدت زمان مشخصی متحرک می کند. یک ObjectAnimator نشان می دهد.

ویژگی ها:

android:propertyName
رشته . مورد نیاز . ویژگی شیء برای متحرک سازی که با نام آن ارجاع داده می شود. به عنوان مثال، می توانید "alpha" یا "backgroundColor" را برای یک شی View مشخص کنید. با این حال، عنصر objectAnimator یک ویژگی target را نشان نمی‌دهد، بنابراین نمی‌توانید شی را به صورت متحرک در اعلان XML تنظیم کنید. شما باید منبع XML انیمیشن خود را با فراخوانی loadAnimator() افزایش دهید و setTarget() را فراخوانی کنید تا شی هدف حاوی این ویژگی را تنظیم کنید.
android:valueTo
شناور، int، یا رنگ . مورد نیاز . مقداری که در آن ویژگی متحرک به پایان می رسد. رنگ ها به صورت اعداد شش رقمی هگزادسیمال مانند #333333 نشان داده می شوند.
android:valueFrom
شناور، int، یا رنگ . مقداری که ویژگی متحرک از آنجا شروع می شود. اگر مشخص نشده باشد، انیمیشن با مقدار بدست آمده توسط متد get ویژگی شروع می شود. رنگ ها به صورت اعداد شش رقمی هگزادسیمال مانند #333333 نشان داده می شوند.
android:duration
میان . زمان انیمیشن بر حسب میلی ثانیه 300 میلی ثانیه پیش فرض است.
android:startOffset
میان . مقدار میلی ثانیه ای که انیمیشن پس از start() تاخیر می کند فراخوانی می شود.
android:repeatCount
میان . چند بار تکرار یک انیمیشن برای تکرار بی نهایت یا روی یک عدد صحیح مثبت روی "-1" تنظیم کنید. به عنوان مثال، مقدار "1" به این معنی است که انیمیشن یک بار پس از اجرای اولیه انیمیشن تکرار می شود، بنابراین انیمیشن در مجموع دو بار پخش می شود. مقدار پیش فرض "0" است که به معنای عدم تکرار است.
android:repeatMode
میان . وقتی یک انیمیشن به انتهای انیمیشن می رسد چگونه رفتار می کند. android:repeatCount باید روی یک عدد صحیح مثبت یا "-1" تنظیم شود تا این ویژگی تاثیر داشته باشد. برای داشتن جهت معکوس انیمیشن با هر تکرار روی "reverse" یا "restart" را برای داشتن حلقه انیمیشن از ابتدا در هر بار تنظیم کنید.
android:valueType
کلمه کلیدی اگر مقدار یک رنگ است، این ویژگی را مشخص نکنید. چارچوب انیمیشن به طور خودکار مقادیر رنگ را کنترل می کند.
ارزش توضیحات
intType مشخص می کند که مقادیر متحرک اعداد صحیح هستند.
floatType (پیش فرض) مشخص می کند که مقادیر متحرک شناور هستند.
<animator>
یک انیمیشن را در مدت زمان مشخصی اجرا می کند. یک ValueAnimator نشان می دهد.

ویژگی ها:

android:valueTo
شناور، int، یا رنگ . مورد نیاز . مقداری که انیمیشن در آن به پایان می رسد. رنگ ها به صورت اعداد شش رقمی هگزادسیمال مانند #333333 نشان داده می شوند.
android:valueFrom
شناور، int، یا رنگ . مورد نیاز . مقداری که انیمیشن از آنجا شروع می شود. رنگ ها به صورت اعداد شش رقمی هگزادسیمال مانند #333333 نشان داده می شوند.
android:duration
میان . زمان انیمیشن بر حسب میلی ثانیه 300ms پیش فرض است.
android:startOffset
میان . مقدار میلی ثانیه ای که انیمیشن پس از start() تاخیر می کند فراخوانی می شود.
android:repeatCount
میان . چند بار تکرار یک انیمیشن برای تکرار بی نهایت یا روی یک عدد صحیح مثبت روی "-1" تنظیم کنید. به عنوان مثال، مقدار "1" به این معنی است که انیمیشن یک بار پس از اجرای اولیه انیمیشن تکرار می شود، بنابراین انیمیشن در مجموع دو بار پخش می شود. مقدار پیش فرض "0" است که به معنای عدم تکرار است.
android:repeatMode
میان . وقتی یک انیمیشن به انتهای انیمیشن می رسد چگونه رفتار می کند. android:repeatCount باید روی یک عدد صحیح مثبت یا "-1" تنظیم شود تا این ویژگی تاثیر داشته باشد. برای داشتن جهت معکوس انیمیشن با هر تکرار روی "reverse" یا "restart" را برای داشتن حلقه انیمیشن از ابتدا در هر بار تنظیم کنید.
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 به عنوان یک راحتی تنظیم می کند. کد زیر نحوه انجام این کار را نشان می دهد:

کاتلین

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

جاوا

AnimatorSet set = (AnimatorSet) AnimatorInflater.loadAnimator(myContext,
    R.animator.property_animator);
set.setTarget(myObject);
set.start();
همچنین ببینید:

مشاهده انیمیشن

چارچوب انیمیشن view از انیمیشن های tween و فریم به فریم پشتیبانی می کند که هر دو در XML اعلام شده اند. بخش های زیر نحوه استفاده از هر دو روش را شرح می دهد.

انیمیشن توئین

یک انیمیشن تعریف شده در XML که جابجایی هایی را روی یک گرافیک انجام می دهد مانند چرخش، محو شدن، حرکت و کشش.

محل فایل:
res/anim/ filename .xml
نام فایل به عنوان شناسه منبع استفاده می شود.
نوع داده منبع کامپایل شده:
اشاره گر منبع به یک Animation
مرجع منبع:
در جاوا: 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
منبع Interpolator Interpolator برای اعمال بر روی انیمیشن. مقدار باید ارجاع به منبعی باشد که یک interpolator را مشخص می کند، نه نام کلاس interpolator. منابع درون‌یابی پیش‌فرض از پلتفرم موجود است یا می‌توانید منبع درون‌یابی خود را ایجاد کنید. برای اطلاعات بیشتر در مورد interpolators به ​​بحث زیر مراجعه کنید.
android:shareInterpolator
بولی . اگر می‌خواهید یک درون‌یابی را در میان همه عناصر فرزند به اشتراک بگذارید "true" .
<alpha>
یک انیمیشن محو یا محو شده. یک AlphaAnimation نشان می دهد.

ویژگی ها:

android:fromAlpha
شناور . آفست کدورت شروع، که در آن 0.0 شفاف و 1.0 مات است.
android:toAlpha
شناور . پایان دادن به کدورت، جایی که 0.0 شفاف و 1.0 مات است.

برای ویژگی‌های بیشتر پشتیبانی شده توسط <alpha> ، به مرجع کلاس برای Animation مراجعه کنید، که ویژگی‌های XML آن توسط این عنصر به ارث می‌رسد.

<scale>
یک انیمیشن تغییر اندازه می توانید نقطه مرکزی تصویر را که از آن به سمت بیرون یا داخل رشد می کند، با تعیین pivotX و pivotY مشخص کنید. به عنوان مثال، اگر این مقادیر 0،0 (گوشه سمت چپ بالا)، تمام رشد پایین و به سمت راست است. یک ScaleAnimation را نشان می دهد.

ویژگی ها:

android:fromXScale
شناور . شروع افست اندازه X، جایی که 1.0 تغییری ندارد.
android:toXScale
شناور . پایان افست اندازه X، جایی که 1.0 تغییری ندارد.
android:fromYScale
شناور . شروع افست اندازه Y، که در آن 1.0 تغییری ندارد.
android:toYScale
شناور . پایان افست اندازه Y، جایی که 1.0 تغییری ندارد.
android:pivotX
شناور . مختصات X برای ثابت ماندن زمانی که شیء بزرگ می شود.
android:pivotY
شناور . مختصات Y برای ثابت ماندن زمانی که شیء مقیاس بندی می شود.

برای ویژگی‌های بیشتر که توسط <scale> پشتیبانی می‌شوند، به مرجع کلاس برای Animation مراجعه کنید، که ویژگی‌های XML آن توسط این عنصر به ارث می‌رسد.

<translate>
یک حرکت عمودی و/یا افقی. یک TranslateAnimation را نشان می دهد. از ویژگی های زیر در هر یک از این سه فرمت پشتیبانی می کند:
  • مقادیر از 100- تا 100 که با "%" ختم می شود، نشان دهنده درصدی نسبت به خودش است.
  • مقادیر از 100- تا 100 به "%p" ختم می‌شوند که درصدی را نسبت به والد آن نشان می‌دهد.
  • یک مقدار شناور بدون پسوند، که یک مقدار مطلق را نشان می دهد.

ویژگی ها:

android:fromXDelta
شناور یا درصد . شروع X offset. بیان شده یا در پیکسل نسبت به موقعیت عادی، مانند "5" ; در درصد نسبت به عرض عنصر، مانند "5%" ; یا در درصد نسبت به عرض والد، مانند "5%p" .
android:toXDelta
شناور یا درصد . پایان افست X. بیان شده یا در پیکسل نسبت به موقعیت عادی، مانند "5" ; در درصد نسبت به عرض عنصر، مانند "5%" ; یا در درصد نسبت به عرض والد، مانند "5%p" .
android:fromYDelta
شناور یا درصد . شروع Y offset. بیان شده یا در پیکسل نسبت به موقعیت عادی، مانند "5" ; در درصد نسبت به ارتفاع عنصر، مانند "5%" ; یا در درصد نسبت به قد والدین، مانند "5%p" .
android:toYDelta
شناور یا درصد . پایان Y offset. بیان شده یا در پیکسل نسبت به موقعیت عادی، مانند "5" ; در درصد نسبت به ارتفاع عنصر، مانند "5%" ; یا در درصد نسبت به قد والدین، مانند "5%p" .

برای ویژگی‌های بیشتر پشتیبانی شده توسط <translate> ، به مرجع کلاس برای Animation مراجعه کنید، که ویژگی‌های XML آن توسط این عنصر به ارث می‌رسد.

<rotate>
یک انیمیشن چرخشی یک RotateAnimation را نشان می دهد.

ویژگی ها:

android:fromDegrees
شناور . موقعیت زاویه ای شروع، بر حسب درجه.
android:toDegrees
شناور . پایان موقعیت زاویه ای، بر حسب درجه.
android:pivotX
شناور یا درصد . مختصات X مرکز چرخش. بیان شده یا در پیکسل نسبت به لبه سمت چپ جسم، مانند "5" ; در درصد نسبت به لبه سمت چپ جسم، مانند "5%" ; یا در درصد نسبت به لبه سمت چپ ظرف اصلی، مانند "5%p" .
android:pivotY
شناور یا درصد . مختصات Y مرکز چرخش. در پیکسل نسبت به لبه بالایی جسم، مانند "5" بیان می شود. در درصد نسبت به لبه بالایی جسم، مانند "5%" ; یا بر حسب درصد نسبت به لبه بالای ظرف اصلی، مانند "5%p" .

برای ویژگی‌های بیشتر که توسط <rotate> پشتیبانی می‌شوند، به مرجع کلاس برای Animation مراجعه کنید، که ویژگی‌های 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 اعمال می کند و انیمیشن را شروع می کند:

کاتلین

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

جاوا

ImageView image = (ImageView) findViewById(R.id.image);
Animation hyperspaceJump = AnimationUtils.loadAnimation(this, R.anim.hyperspace_jump);
image.startAnimation(hyperspaceJump);
همچنین ببینید:

مداخله گرها

Interpolator یک اصلاح کننده انیمیشن تعریف شده در XML است که بر میزان تغییر در یک انیمیشن تأثیر می گذارد. این اجازه می دهد تا جلوه های انیمیشن موجود شما تسریع، کاهش سرعت، تکرار، پرش و غیره شود.

یک interpolator برای یک عنصر انیمیشن با ویژگی android:interpolator اعمال می شود که مقدار آن ارجاع به یک منبع درون یابی است.

تمام interpolator های موجود در اندروید زیر کلاس های کلاس Interpolator هستند. برای هر کلاس interpolator، Android شامل یک منبع عمومی است که می توانید با استفاده از ویژگی android:interpolator درون یابی را برای یک انیمیشن اعمال کنید. جدول زیر منبع مورد استفاده برای هر interpolator را مشخص می کند:

کلاس Interpolator شناسه منبع
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>

درون یابی سفارشی

اگر از interpolator های ارائه شده توسط پلتفرم راضی نیستید، می توانید یک منبع interpolator سفارشی با ویژگی های اصلاح شده ایجاد کنید. برای مثال، می‌توانید نرخ شتاب را برای AnticipateInterpolator یا تعداد چرخه‌ها را برای CycleInterpolator تنظیم کنید. برای انجام این کار، منبع interpolator خود را در یک فایل 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"
    />

اگر هیچ مشخصه‌ای را اعمال نمی‌کنید، درون‌یابی شما دقیقاً مانند مواردی است که پلتفرم ارائه می‌کند، که در جدول قبل فهرست شده است.

عناصر:
توجه داشته باشید که هر پیاده سازی Interpolator ، زمانی که در XML تعریف می شود، نامی دارد که با یک حرف کوچک شروع می شود.

<accelerateDecelerateInterpolator>
سرعت تغییر به آرامی شروع و به پایان می رسد اما از وسط سرعت می گیرد.

بدون ویژگی.

<accelerateInterpolator>
سرعت تغییر به آهستگی شروع می شود، سپس تسریع می شود.

ویژگی ها:

android:factor
شناور . نرخ شتاب. پیش فرض 1 است.
<anticipateInterpolator>
تغییر به عقب شروع می شود، سپس به جلو پرتاب می شود.

ویژگی ها:

android:tension
شناور . میزان کشش اعمال شده پیش فرض 2 است.
<anticipateOvershootInterpolator>
تغییر به عقب شروع می شود، سپس به جلو پرتاب می شود و از مقدار هدف فراتر می رود، سپس در مقدار نهایی قرار می گیرد.

ویژگی ها:

android:tension
شناور . میزان کشش اعمال شده پیش فرض 2 است.
android:extraTension
شناور . مقداری که باید کشش را در آن ضرب کرد. پیش فرض 1.5 است.
<bounceInterpolator>
تغییر در پایان باز می گردد.

هیچ ویژگی

<cycleInterpolator>
انیمیشن را برای تعداد مشخصی از چرخه ها تکرار می کند. سرعت تغییر از یک الگوی سینوسی پیروی می کند.

ویژگی ها:

android:cycles
عدد صحیح تعداد چرخه ها پیش فرض 1 است.
<decelerateInterpolator>
سرعت تغییر به سرعت شروع می شود، سپس کاهش می یابد.

ویژگی ها:

android:factor
شناور . نرخ کاهش سرعت پیش فرض 1 است.
<linearInterpolator>
سرعت تغییر ثابت است.

هیچ ویژگی

<overshootInterpolator>
تغییر به جلو پرت می شود و از آخرین مقدار فراتر می رود، سپس برمی گردد.

ویژگی ها:

android:tension
شناور . مقدار کشش اعمال شده پیش فرض 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
بولی . "true" اگر می خواهید انیمیشن را یک بار اجرا کنید. "false" برای حلقه کردن انیمیشن.
<item>
یک فریم از انیمیشن باید فرزند عنصر <animation-list> باشد.

ویژگی ها:

android:drawable
منبع قابل ترسیم قابل کشیدن برای استفاده برای این قاب.
android:duration
عدد صحیح مدت زمان نمایش این قاب، بر حسب میلی ثانیه.
مثال:

فایل XML ذخیره شده در res/drawable/rocket_thrust.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>

کد برنامه زیر انیمیشن را به عنوان پس‌زمینه View تنظیم می‌کند، سپس انیمیشن را پخش می‌کند:

کاتلین

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

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

جاوا

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

rocketAnimation = rocketImage.getBackground();
if (rocketAnimation instanceof Animatable) {
    ((Animatable)rocketAnimation).start();
}
همچنین ببینید: