Bir animasyon kaynağı, iki animasyon türünden birini tanımlayabilir:
- Mülk animasyonu
- Belirli bir dönemde nesnenin özellik değerlerini değiştirerek animasyon oluşturur
Animatorile. - Animasyonu göster
-
Animasyon görüntüleme çerçevesiyle yapabileceğiniz iki tür animasyon vardır:
- Taze animasyon: Tek bir resimde bir dizi dönüşüm gerçekleştirerek animasyon oluşturur
Animationile. - Kare animasyonu: Resimleri sırayla göstererek animasyon oluşturur
AnimationDrawableile.
- Taze animasyon: Tek bir resimde bir dizi dönüşüm gerçekleştirerek animasyon oluşturur
Mülk animasyonu
XML'de tanımlanmış ve hedef nesnenin özelliklerini değiştiren bir animasyon. Örneğin: arka plan rengini veya alfa değerini belirli bir süre boyunca değiştirebilirsiniz.
- dosya konumu:
Dosya adı, kaynak kimliği olarak kullanılır.- derlenen kaynak veri türü:
- Kaynak işaretçisi bir
ValueAnimator,ObjectAnimator, veyaAnimatorSet - kaynak referansı:
- .
Java tabanlı veya Kotlin kodunda:
R.animator.filename
XML'de:@[package:]animator/filename - söz dizimi:
-
<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>
Dosyanın tek bir kök öğesi olmalıdır:
<set>,<objectAnimator>veya<valueAnimator>. Şunları yapabilirsiniz: animasyon öğelerini<set>öğesinin içinde gruplayın (diğer dahil olmak üzere)<set>öğeleri. - öğeler:
- örnek:
-
res/animator/property_animator.xmlitibarıyla kaydedilen XML dosyası:<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>
Bu animasyonu çalıştırmak için koddaki XML kaynaklarını bir
AnimatorSetnesnesine şişirin ve ardından tüm animasyonlar için hedef nesneleri ayarlayın. .setTarget()çağrısı yapıldığında, kolaylık sağlamak amacıylaAnimatorSetöğesinin tüm alt öğeleri için tek bir hedef nesne ayarlanır. Aşağıdaki kodda bunun nasıl yapılacağı gösterilmektedir: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();
- ayrıca bkz.:
-
- Mülk Animasyonuna Genel Bakış
- Örnekler için API demoları mülk animasyon sisteminin
res/animator/filename.xmlAnimasyonu görüntüle
Görüntüleme animasyonu çerçevesi, her ikisi de bildirilen iki kare arası ve kare kare animasyonların her ikisini de destekler oluşturun. Aşağıdaki bölümlerde her iki yöntemin de nasıl kullanılacağı açıklanmaktadır.
9-12 yaş animasyonu
XML'de tanımlanmış ve bir grafik üzerinde döndürme, kaybolma, hareket etme ve esneme.
- dosya konumu:
Dosya adı, kaynak kimliği olarak kullanılır.- derlenen kaynak veri türü:
- Kaynak işaretçisini bir
Animation - kaynak referansı:
- .
Java'da:
R.anim.filename
XML'de:@[package:]anim/filename - söz dizimi:
-
<?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>
Dosyanın tek bir kök öğesi olmalıdır:
<alpha>,<scale>,<translate>, Şu öğeyi içeren<rotate>veya<set>öğesi diğer animasyon öğelerinin (iç içe yerleştirilmiş<set>öğeleri dahil) bir grubu (veya grupları). - öğeler:
- örnek:
-
res/anim/hyperspace_jump.xmlitibarıyla kaydedilen XML dosyası:<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>
Aşağıdaki uygulama kodu, animasyonu bir
ImageViewve animasyonu başlatır: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); - ayrıca bkz.:
res/anim/filename.xmlİnterpolatörler
Ara değer, XML'de tanımlanan ve bir öğenin değişim hızını etkileyen, animasyon ekler. Bu, mevcut animasyon efektlerinizin hızlandırılmasını, yavaşlatılmasını, tekrarlanmasını, geri döndü vb.
Ara değer, android:interpolator içeren animasyon öğesine uygulanır.
özelliğinin değeri.
Android'de kullanılabilen tüm interpolatörler Interpolator sınıfının alt sınıflarıdır. Her interpolator sınıfı için Android
Bir animasyona interpolator uygulamak için başvurabileceğiniz bir ortak kaynak içerir
(android:interpolator özelliği) kullanabilirsiniz.
Aşağıdaki tabloda her interpolator için kullanılacak kaynak belirtilmiştir:
| İnterpolatör sınıfı | Kaynak Kimliği |
|---|---|
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 |
Bunlardan birini android:interpolator özelliğiyle nasıl uygulayabileceğiniz aşağıda açıklanmıştır:
<set android:interpolator="@android:anim/accelerate_interpolator"> ... </set>
Özel arapolatörler
Platformun sağladığı interpolatörlerden memnun kalmazsanız değiştirilmiş özelliklere sahip özel bir interpolator kaynağı oluşturabilirsiniz.
Örneğin, reklamlarınızın yayınlanma oranını
AnticipateInterpolator için ivmelenme veya
CycleInterpolator döngüleri. Bunun için,
XML dosyasında kendi interpolator kaynağınızı oluşturun.
- dosya konumu:
Dosya adı, kaynak kimliği olarak kullanılır.- derlenen kaynak veri türü:
- İlgili interpolator nesnesine yönelik kaynak işaretçisi
- kaynak referansı:
- .
XML'de:
@[package:]anim/filename - söz dizimi:
-
<?xml version="1.0" encoding="utf-8"?> <InterpolatorName xmlns:android="http://schemas.android.com/apk/res/android" android:attribute_name="value" />
Herhangi bir özellik uygulamazsanız interpolator'unuz tam olarak Platform tarafından sağlananlar (önceki tabloda listelenenler)
- öğeler:
- Her
Interpolatoruygulamasında, XML'de tanımlandığı şekilde, küçük harfle başlayan bir ada sahiptir. - örnek:
-
res/anim/my_overshoot_interpolator.xmlitibarıyla kaydedilen XML dosyası:<?xml version="1.0" encoding="utf-8"?> <overshootInterpolator xmlns:android="http://schemas.android.com/apk/res/android" android:tension="7.0" />
Bu animasyon XML'i, interpolator'ı uygular:
<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" />
res/anim/filename.xmlAnimasyon karesi
XML olarak tanımlanmış ve film gibi bir dizi resmi gösteren animasyon.
- dosya konumu:
Dosya adı, kaynak kimliği olarak kullanılır.- derlenen kaynak veri türü:
- Kaynak işaretçisini bir
AnimationDrawable - kaynak referansı:
- .
Java'da:
R.drawable.filename
XML'de:@[package:]drawable.filename - söz dizimi:
-
<?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>
- öğeler:
- örnek:
-
res/drawable/rocket_thrust.xmlitibarıyla kaydedilen XML dosyası:<?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>
Aşağıdaki uygulama kodu, animasyonu
Viewiçin arka plan olarak ayarlar animasyonu oynatın:Kotlin
val rocketImage: ImageView = findViewById(R.id.rocket_image) rocketImage.
setBackgroundResource(R.drawable.rocket_thrust) val rocketAnimation = rocketImage.backgroundif (rocketAnimation isAnimatable) { rocketAnimation.start()}Java
ImageView rocketImage = (ImageView) findViewById(R.id.rocket_image); rocketImage.
setBackgroundResource(R.drawable.rocket_thrust); rocketAnimation = rocketImage.getBackground(); if (rocketAnimation instanceofAnimatable) { ((Animatable)rocketAnimation).start(); } - ayrıca bkz.:
res/drawable/filename.xml