منابع پویانمایی

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

پویانمایی ویژگی
با اصلاح کردن مقادیر ویژگی شیء در طول یک دوره مشخص با Animator، پویانمایی ایجاد می‌کند.
مشاهده پویانمایی

دو نوع پویانمایی وجود دارد که می‌توانید با چارچوب پویانمایی نما انجام دهید:

پویانمایی ویژگی

پویانمایی تعریف‌شده در XML که ویژگی‌های شیء هدف را، مثل رنگ پس‌زمینه یا مقدار آلفا، در طول مدت زمان مشخصی اصلاح می‌کند.

مکان فایل:
res/animator/filename.xml
نام فایل به‌عنوان شناسه منبع استفاده می‌شود.
نوع داده منبع کامپایل‌شده:
اشاره‌گر منبع به ValueAnimator، ObjectAnimator، یا AnimatorSet
مرجع منبع:
در کد مبتنی بر جاوا یا Kotlin: R.animator.filename
در XML: @[package:]animator/filename
نحو:
<set
  android:ordering=["together" | ">;seque<ntially"]

    objectAnimator
        android:propertyName="string&quot;
        android:duration=&quot;int&quot;
        android:valueFrom="float | int | color&quot;
        android:valueTo=&quot;float | int | color"
        android:startOffset="int"
        android:repeatCount="int"
        android:repeatM>ode=[&<quot;restart" | "reverse&quot;]
        android:valueType=[&quot;intType&quot; | "floatType"]/

    animator
pan class="devsite-syntax-w">        android:duration="int&quot;
        android:valueFrom="float<span class="devsite-syntax-w"> | int | color"
        android:valueTo="float | int | color"
        android:startOffset=&>quot;i<nt&>quot;
        >android:&>lt;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
float،‏ int، یا color. الزامی. مقداری که خصوصیت پویانمایی‌شده در آن به‌پایان می‌رسد. رنگ‌ها به‌صورت اعداد شانزده‌شانزدهی شش رقمی، مانند ‎ #333333، نشان داده می‌شوند.
android:valueFrom
float،‏ int، یا color. مقداری که خصوصیت پویانمایی‌شده از آن شروع می‌شود. اگر مشخص نشده باشد، پویانمایی از مقداری که با روش get ویژگی به‌دست آمده است شروع می‌شود. رنگ‌ها به‌صورت اعداد شانزده‌شانزدهی شش رقمی، مانند ‎ #333333، نشان داده می‌شوند.
android:duration
int. زمان پویانمایی برحسب میلی‌ثانیه. ۳۰۰ میلی‌ثانیه پیش‌فرض است.
android:startOffset
int. مقدار میلی‌ثانیه‌ای که پویانمایی پس‌از فراخوانی start() تأخیر دارد.
android:repeatCount
int. تعداد دفعات تکرار پویانمایی. روی "-1" تنظیم کنید تا بی‌نهایت تکرار شود یا روی عدد صحیح مثبت تنظیم کنید. برای مثال، مقدار "1" یعنی پویانمایی یک‌بار پس‌از اجرای اولیه پویانمایی تکرار می‌شود، بنابراین پویانمایی درمجموع دو بار پخش می‌شود. مقدار پیش‌فرض "0" است که به‌معنای عدم تکرار است.
android:repeatMode
int. نحوه رفتار پویانمایی وقتی به پایان پویانمایی می‌رسد. android:repeatCount باید روی عدد صحیح مثبت یا "-1" تنظیم شود تا این مشخصه تأثیر داشته باشد. روی "reverse" تنظیم کنید تا جهت پویانمایی با هر تکرار معکوس شود یا روی "restart" تنظیم کنید تا پویانمایی هر بار از ابتدا تکرار شود.
android:valueType
کلیدواژه. اگر مقدار رنگ است، این مشخصه را تعیین نکنید. چارچوب پویانمایی به‌طور خودکار مقادیر رنگ را مدیریت می‌کند.
مقدارشرح
intTypeمشخص می‌کند که مقادیر پویانمایی‌شده عدد صحیح هستند.
‫floatType (پیش‌فرض)مشخص می‌کند که مقادیر پویانمایی‌شده اعشاری هستند.
<animator>
پویانمایی را در مدت زمان مشخصی اجرا می‌کند. نشان‌دهنده ValueAnimator است.

مشخصه ها:

android:valueTo
float،‏ int، یا color. الزامی. مقداری که پویانمایی در آنجا به‌پایان می‌رسد. رنگ‌ها به‌صورت اعداد شانزده‌شانزدهی شش رقمی، مانند ‎ #333333، نشان داده می‌شوند.
android:valueFrom
float،‏ int، یا color. الزامی. مقداری که پویانمایی از آن شروع می‌شود. رنگ‌ها به‌صورت اعداد شانزده‌شانزدهی شش رقمی، مانند ‎ #333333، نشان داده می‌شوند.
android:duration
int. زمان پویانمایی برحسب میلی‌ثانیه. ‫۳۰۰ میلی‌ثانیه پیش‌فرض است.
android:startOffset
int. مقدار میلی‌ثانیه‌ای که پویانمایی پس‌از فراخوانی start() تأخیر دارد.
android:repeatCount
int. تعداد دفعات تکرار پویانمایی. روی "-1" تنظیم کنید تا بی‌نهایت تکرار شود یا روی عدد صحیح مثبت تنظیم کنید. برای مثال، مقدار "1" یعنی پویانمایی یک‌بار پس‌از اجرای اولیه پویانمایی تکرار می‌شود، بنابراین پویانمایی درمجموع دو بار پخش می‌شود. مقدار پیش‌فرض "0" است که به‌معنای عدم تکرار است.
android:repeatMode
int. نحوه رفتار پویانمایی وقتی به پایان پویانمایی می‌رسد. android:repeatCount باید روی عدد صحیح مثبت یا "-1" تنظیم شود تا این مشخصه تأثیر داشته باشد. روی "reverse" تنظیم کنید تا جهت پویانمایی با هر تکرار معکوس شود یا روی "restart" تنظیم کنید تا پویانمایی هر بار از ابتدا تکرار شود.
android:valueType
کلیدواژه. اگر مقدار رنگ است، این مشخصه را تعیین نکنید. چارچوب پویانمایی به‌طور خودکار مقادیر رنگ را مدیریت می‌کند.
مقدارشرح
intTypeمشخص می‌کند که مقادیر پویانمایی‌شده عدد صحیح هستند.
‫floatType (پیش‌فرض)مشخص می‌کند که مقادیر پویانمایی‌شده اعشاری هستند.
مثال:

فایل XML در res/animator/property_animator.xml ذخیره شد:

<set android:ordering="sequenti>ally&<quo>t;
    se<t
        objectAnimator
            android:propertyName="x"
            android:duration="500"
            android:valueTo="400"
>         <   android:valueType="intType"/
        objectAnimator
            android:propertyName="y"
            android:duration="500"
    >     <   <>/span>androi<d:valueTo="300"
            android:valueType="intType"/
    /set
    objectAnimator
       > &>lt;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();
همچنین ببینید:

مشاهده پویانمایی

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

پویانمایی بینابینی

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

مکان فایل:
res/anim/filename.xml
نام فایل به‌عنوان شناسه منبع استفاده می‌شود.
نوع داده منبع کامپایل‌شده:
اشاره‌گر منبع به Animation
مرجع منبع:
در Java: R.anim.filename
در XML: @[package:]anim/filename
نحو:
<?xml version="1.0" encoding=<&quot;utf-8"?>
set xmlns:android="http://schemas.android.com/apk/res/android"
    android:interpolator=";@[package:]anim/interpolator_resource"
    an>droid<:shareInterpolator=["true&quot; | "false"] 
    alpha
    >    a<ndroid:fromAlpha="float"
        android:toAlpha="flm>oat" /
    scale
        android:fromXScale="float"
        android:toXScale="fm>loat"
        android:fromYScale=&>quot;<float&quot;
        android:toYScale=&quot;float"
        android:pivotX="float"
        android:pivotY="float" /
    tran>slate<
        android:fromXDelta="float&quot;
        android:toXDelta=&quot;float"
        android:fromYDelta="float";
      >  and<>roid:toYDelta="<floa>t<&quo>t; /
    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 برای اعمال روی پویانمایی. مقدار باید مرجعی به منبعی باشد که درون‌یاب را مشخص می‌کند، نه نام کلاس درون‌یاب. منابع پیش‌فرض میان‌یاب در پلاتفرم دردسترس است یا می‌توانید منبع میان‌یاب خودتان را ایجاد کنید. برای اطلاعات بیشتر درباره درون‌یاب‌ها، به بحث زیر مراجعه کنید.
android:shareInterpolator
بولی. "true" اگر می‌خواهید از یک میان‌یاب برای همه عناصر فرزند استفاده کنید.
<alpha>
پویانمایی محو شدن یا ظاهر شدن. نشان‌دهنده AlphaAnimation است.

مشخصه ها:

android:fromAlpha
شناور. آفست کدری شروع، که ۰٫۰ شفاف و ۱٫۰ کدر است.
android:toAlpha
شناور. انحراف ماتی پایانی، که ۰٫۰ شفاف و ۱٫۰ مات است.

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

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

مشخصه ها:

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

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

<translate>
حرکت عمودی و/یا افقی. نشان‌دهنده TranslateAnimation است. از مشخصه‌های زیر در هریک از این سه قالب پشتیبانی می‌کند:
  • مقادیر از ۱۰۰- تا ۱۰۰ که به «٪» ختم می‌شوند، نشان‌دهنده درصد نسبت به خودشان هستند.
  • مقادیر از ۱۰۰- تا ۱۰۰ که به «‎%p» ختم می‌شوند، نشان‌دهنده درصد نسبت به والد آن است.
  • مقدار اعشاری بدون پسوند که نشان‌دهنده مقدار مطلق است.

مشخصه ها:

android:fromXDelta
عدد اعشاری یا درصد. انحراف X شروع. یا به‌صورت پیکسل نسبت به موقعیت عادی، مثل "5"؛ یا به‌صورت درصد نسبت به عرض عنصر، مثل "5%"؛ یا به‌صورت درصد نسبت به عرض والد، مثل "5%p" بیان می‌شود.
android:toXDelta
عدد اعشاری یا درصد. درحال پایان دادن به جابه‌جایی X. یا به‌صورت پیکسل نسبت به موقعیت عادی، مثل "5"؛ یا به‌صورت درصد نسبت به عرض عنصر، مثل "5%"؛ یا به‌صورت درصد نسبت به عرض والد، مثل "5%p" بیان می‌شود.
android:fromYDelta
عدد اعشاری یا درصد. انحراف Y شروع. یا به‌صورت پیکسل نسبت به موقعیت عادی، مثل "5"، یا به‌صورت درصد نسبت به ارتفاع عنصر، مثل "5%"، یا به‌صورت درصد نسبت به ارتفاع والد، مثل "5%p"، بیان می‌شود.
android:toYDelta
عدد اعشاری یا درصد. پایان دادن به جابه‌جایی Y. یا به‌صورت پیکسل‌های مرتبط با موقعیت عادی، مثل "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=&qu<ot;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:pi<votY="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:fromY<Scale="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);
همچنین ببینید:

درون‌یاب‌ها

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

درون‌یاب با مشخصه android:interpolator روی عنصر پویانمایی اعمال می‌شود، مقدار آن مرجعی به منبع درون‌یاب است.

همه درون‌یاب‌های موجود در Android زیرکلاس‌های کلاس Interpolator هستند. برای هر کلاس میان‌یاب، Android شامل یک منبع عمومی است که می‌توانید برای اعمال میان‌یاب به پویانمایی بااستفاده از مشخصه android: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_interpol>ator"<;
  >  ...
/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&quot;
    android:attribute_name="value"
    />

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

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

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

بدون مشخصه.

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

مشخصه ها:

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

مشخصه ها:

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

مشخصه ها:

android:tension
شناور. میزان تنشی که باید اعمال شود. پیش‌فرض ۲ است.
android:extraTension
شناور. مقداری که کشش در آن ضرب می‌شود. پیش‌فرض ۱.۵ است.
<bounceInterpolator>
تغییر در پایان جهش می‌کند.

بدون ویژگی

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

مشخصه ها:

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

مشخصه ها:

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

بدون مشخصه.

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

مشخصه ها:

android:tension
شناور. میزان تنشی که باید اعمال شود. پیش‌فرض ۲ است.
مثال:

فایل 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
مرجع منبع:
در Java: R.drawable.filename
در XML: @[package:]drawable.filename
نحو:
<?xml version="1.0" encoding=<"utf-8&quot;?>
animation-list xmlns:android="http://schemas.android.com/apk/res/android"
    android:<oneshot=["true" | "false"] >
    item
        android:drawable="@[package:]drawable/d<rawable_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="@draw<able/rocket_thrust1" android:duration="200" />
    item andro<id: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();
}
همچنین ببینید: