Görünümler'de ara animasyonlar gerçekleştirmek için görünüm animasyon sistemini kullanabilirsiniz. 9-12 yaş animasyonu animasyonu başlangıç noktası, bitiş noktası, boyut, döndürme ve bir animasyonun diğer ortak yönlerine değineceğiz.
90 karelik bir animasyon, bir dizi basit dönüşüm (konum, boyut, döndürme,
ve şeffaflık) dahil edilir. Dolayısıyla, TextView
nesneniz varsa metni taşıyabilir, döndürebilir, büyütebilir veya küçültebilirsiniz. Bir
arka plan resmi, metinle birlikte dönüştürülür. animation package
, bir ara animasyonda kullanılan tüm sınıfları sağlar.
Bir animasyon talimatları dizisi, XML ya da
Android kodu. Düzen tanımlamada olduğu gibi, daha okunabilir olduğu için XML dosyası da önerilir.
animasyonu sabit kodlamaya göre yeniden kullanılabilir ve değiştirilebilir. Aşağıdaki örnekte XML kullanıyoruz. (
XML yerine, uygulama kodunuzda animasyon tanımlama hakkında daha fazla bilgi edinmek için
AnimationSet
sınıfı ve diğer Animation
alt sınıf.)
Animasyon talimatları, gerçekleşmesini istediğiniz dönüşümleri tanımlar. ve başvuruların ne kadar süreceğini net bir şekilde anlamışsınızdır. Dönüşümler sıralı veya eş zamanlı olabilir - örneğin, bir TextView içeriğinin soldan sağa taşınmasını ve sonra döndürmesini sağlayabilirsiniz 180 derece veya metnin eş zamanlı olarak hareket etmesini ve dönmesini sağlayabilirsiniz. Her dönüşüm bir dönüşüme özel parametre grubu (boyut için başlangıç boyutu ve bitiş boyutu) değişimi, dönüş için başlangıç açısı ve bitiş açısı vb.) ve ayrıca bir dizi ortak parametreleri (örneğin, başlangıç zamanı ve süre) ekleyebilirsiniz. Birkaç dönüşümün gerçekleşmesi için her zaman başlangıç zamanını belirleyin. yapmak istiyorsanız, başlangıç zamanını hesaplayarak + önceki dönüşümün süresi.
Animasyon XML dosyası, Android'inizin res/anim/
dizinine ait
belirler. Dosyanın tek bir kök öğesi olmalıdır: Bu, tek bir
<alpha>
, <scale>
, <translate>
,
<rotate>
, interpolator öğesi veya şunu içeren <set>
öğesi
bu öğelerin bulunduğu gruplar (başka bir <set>
içerebilir). Varsayılan olarak tümü
animasyon talimatları aynı anda uygulanır. Bunların sıralı olarak gerçekleşmesi için
aşağıdaki örnekte gösterildiği gibi startOffset
özelliğini belirtin.
ApiDemos'tan birindeki aşağıdaki XML, içeriği uzatmak, ardından aynı anda döndürme ve bir görünüm nesnesini döndürebilir.
<set 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/decelerate_interpolator"> <scale android:fromXScale="1.4" android:toXScale="0.0" android:fromYScale="0.6" android:toYScale="0.0" android:pivotX="50%" android:pivotY="50%" android:startOffset="700" android:duration="400" android:fillBefore="false" /> <rotate android:fromDegrees="0" android:toDegrees="-45" android:toYScale="0.0" android:pivotX="50%" android:pivotY="50%" android:startOffset="700" android:duration="400" /> </set> </set>
Ekran koordinatları (bu örnekte kullanılmamaktadır), (0, 0) sol üst köşededir ve aşağı ve sağa gittikçe artar.
pivotX gibi bazı değerler, nesnenin kendisine göre veya üst öğesidir. İstediğiniz şey için uygun biçimi kullandığınızdan emin olun ("Üst öğeye göre% 50 için 50", veya "%50" %50'si için).
Interpolator
atayarak bir dönüşümün zaman içinde nasıl uygulanacağını belirleyebilirsiniz. Android'de Interpolator aracına yönelik bazı alt sınıflar yer alır.
çeşitli hız eğrileri belirtin: örneğin, AccelerateInterpolator
bir dönüşümün yavaş başlayıp hızlanmasını söyler. Her birinin
XML'de uygulanır.
Bu XML ile res/anim/
içinde hyperspace_jump.xml
olarak kaydedilir
dizininde yer alıyorsa aşağıdaki kod bu dosyaya başvurur ve onu, düzendeki bir ImageView
nesnesine uygular.
Kotlin
AnimationUtils.loadAnimation(this, R.anim.hyperspace_jump).also { hyperspaceJumpAnimation -> findViewById<ImageView>(R.id.spaceshipImage).startAnimation(hyperspaceJumpAnimation) }
Java
ImageView spaceshipImage = (ImageView) findViewById(R.id.spaceshipImage); Animation hyperspaceJumpAnimation = AnimationUtils.loadAnimation(this, R.anim.hyperspace_jump); spaceshipImage.startAnimation(hyperspaceJumpAnimation);
startAnimation()
özelliğine alternatif olarak,
animasyonu
ile görüntüleyin, ardından animasyonu Animation.setStartTime()
içeren Görünüme atayın.View.setAnimation()
XML söz dizimi, kullanılabilir etiketler ve özellikler hakkında daha fazla bilgi için Animasyon Kaynakları'na bakın.
Not: Animasyonunuzun nasıl hareket ettiğine veya yeniden boyutlandırıldığına bakılmaksızın, animasyonunuzu barındıran Görünümün sınırları, animasyona uygun olacak şekilde otomatik olarak ayarlanmaz. Buna rağmen animasyon, Görünüm sınırlarının dışında çizilir ve kırpılmaz. Bununla birlikte, animasyon üst görünümün sınırlarını aşarsa kırpma gerçekleşir.