یک منبع انیمیشن می تواند یکی از دو نوع انیمیشن را تعریف کند:
- انیمیشن اموال
- یک انیمیشن را با تغییر مقادیر ویژگی یک شی در یک دوره تعیین شده با
Animator
ایجاد می کند. - مشاهده انیمیشن
دو نوع انیمیشن وجود دارد که می توانید با چارچوب انیمیشن view انجام دهید:
- Tween animation : با انجام یک سری تغییرات روی یک تصویر با یک
Animation
یک انیمیشن ایجاد می کند. - انیمیشن فریم : با نمایش دنباله ای از تصاویر به ترتیب با
AnimationDrawable
یک انیمیشن ایجاد می کند.
- Tween animation : با انجام یک سری تغییرات روی یک تصویر با یک
انیمیشن اموال
یک انیمیشن تعریف شده در 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>
، گروه بندی کنید.- عناصر:
- مثال:
فایل 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();
- همچنین ببینید:
- نمای کلی انیمیشن خواص
- دموهای API برای نمونه هایی از نحوه استفاده از سیستم انیمیشن ویژگی
مشاهده انیمیشن
چارچوب انیمیشن 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>
تودرتو) را در خود جای دهد. عناصر).- عناصر:
- مثال:
فایل 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 تعریف می شود، نامی دارد که با یک حرف کوچک شروع می شود. - مثال:
فایل 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>
- عناصر:
- مثال:
فایل 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 isAnimatable
) { rocketAnimation.start()
}جاوا
ImageView rocketImage = (ImageView) findViewById(R.id.rocket_image); rocketImage.
setBackgroundResource
(R.drawable.rocket_thrust); rocketAnimation = rocketImage.getBackground()
; if (rocketAnimation instanceofAnimatable
) { ((Animatable)rocketAnimation).start()
; }- همچنین ببینید: