Animasyonu Görüntüle

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 Animation.setStartTime() ile görüntüleyin, ardından animasyonu View.setAnimation() içeren Görünüme atayın.

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.