View Animation — nedir, Android'de Tween Animation

Yazar: IT Sectr Yayınlanma: 2026-03-01 Okuma süresi: 8 dk

View Animation, Tween Animation (Alpha, Translate, Scale, Rotate) aracılığıyla View nesneleriyle çalışan Android API 1+'ın eski bir animasyon sistemidir. Google, tüm yeni projeler için Property Animation (Animator) önermektedir. Bu makale, ilkeleri, türleri, XML işaretlemesini ve kullanımdan kaldırma nedenlerini açıklamaktadır.

Önemli Noktalar

  • View Animation — Tween Animation ile View animasyonu: Alpha, Translate, Scale, Rotate
  • XML Tanımı — animasyonlar res/anim/ içinde , , , kullanılarak tanımlanır
  • AnimationSet — ortak parametrelerle birden fazla animasyonu tek bir sette birleştirme
  • Sınırlama — View Animation özellikleri değil, sadece görüntülemeyi değiştirir: View orijinal konumunda kalır
  • Property Animation — gerçek nesne özellikleriyle çalışan modern alternatif (Animator)

View Animation Nedir?

View Animation, View seviyesinde (API 1+) çalışan bir Android animasyon alt sistemidir. Dört tür Tween Animation kullanır: AlphaAnimation (şeffaflık), TranslateAnimation (hareket), ScaleAnimation (ölçek) ve RotateAnimation (döndürme). Her animasyon res/anim/ klasöründeki bir XML dosyasında tanımlanır veya Kotlin kodunda programlı olarak oluşturulur.

View Animation mekanizması, bir View'ın gerçek özelliklerini değiştirmez — View'ı yeni bir konumda, ölçekte veya şeffaflıkta yeniden çizer, ancak onTouchEvent() geri çağırması orijinal konumun koordinatlarını alır. Bu, tıklama uyuşmazlığı (click mismatch) olarak bilinen önemli bir sınırlamadır.

Android Geliştirici Dokümantasyonuna (2026) göre Google, Android 3.0'dan (API 11) itibaren View Animation'ı kullanımdan kaldırılmış bir API olarak işaretlemiştir. Yeni projeler için, setter yöntemleri aracılığıyla gerçek nesne özellikleriyle çalışan Property Animation — Animator, AnimatorSet ve ObjectAnimator önerilir.

Tween Animation Türleri

Tween Animation, ana kareler “arasındaki” animasyondur: başlangıç ve bitiş durumunu tanımlarsınız ve sistem ara kareleri hesaplar. Android, her biri kendi parametre setine sahip dört standart tür sağlar.

AlphaAnimation

AlphaAnimation, bir View'ın şeffaflığını fromAlpha'dan toAlpha'ya değiştirir. Değerler 0.0 (tamamen şeffaf) ile 1.0 (tamamen görünür) arasındadır. Varsayılan olarak animasyon 300 ms sürer. fillAfter=true parametresi View'ı son şeffaflık durumunda bırakır.

xml
<!-- res/anim/fade_out.xml -->
<?xml version="1.0" encoding="utf-8"?>
<alpha xmlns:android="http://schemas.android.com/apk/res/android"
    android:fromAlpha="1.0"
    android:toAlpha="0.0"
    android:duration="500"
    android:fillAfter="true" />

TranslateAnimation

TranslateAnimation, bir View'ı başlangıç konumundan (fromXDelta, fromYDelta) bitiş konumuna (toXDelta, toYDelta) taşır. Değerler piksel, üst öğenin yüzdesi veya View'ın kendi yüzdesi olarak belirtilir. Örneğin, %100, View genişliğinin %100'ü anlamına gelir.

ScaleAnimation

ScaleAnimation, bir View'ı pivotX/pivotY noktasına göre ölçeklendirir. fromXScale=1.0, toXScale=2.0 genişliği iki katına çıkarır. pivotType parametresi, pivotun neye göre hesaplandığını belirler: self, parent veya absolute. Ölçek animasyonu View'ın gerçek boyutlarını değiştirmez — yalnızca görüntülemeyi değiştirir.

RotateAnimation

RotateAnimation, bir View'ı bir pivot noktası etrafında fromDegrees'ten toDegrees'e kadar bir açıyla döndürür. Açı derece cinsinden ölçülür: 0 orijinal konum, 360 tam bir dönüştür. Sonsuz döndürme için repeatCount=INFINITE kullanın.

View Animation vs Property Animation

View Animation ve Property Animation (Animator) arasındaki fark, Android animasyon mimarisinde temel bir ayrımdır. View Animation yalnızca görüntüleme üzerinde çalışırken, Property Animation setter yöntemleri aracılığıyla gerçek nesne özelliklerini değiştirir ve bu da düzen güncellemelerine yol açar.

KriterView AnimationProperty Animation
API SeviyesiAPI 1+ (kullanımdan kaldırıldı)API 11+ (önerilen)
Neyi canlandırırView görüntüleme (canvas)Nesne özellikleri (setter)
Animasyon sonrası tıklamaOrijinal konumdaYeni konumda
Animasyon türleri4 Tween + AnimationSetObjectAnimator, ValueAnimator, AnimatorSet
LayoutParamsDeğiştirmezsetLayoutParams ile değiştirir
PerformansYüksek (sadece canvas)Orta (setter'a bağlı)

Animasyonların XML Yapılandırması

View Animation genellikle res/anim/ içindeki XML dosyalarında bir kök öğe (AnimationSet) veya dört türden biri ile tanımlanır. AnimationSet, startOffset, duration, interpolator gibi ortak parametrelerle animasyonları birleştirmeye olanak tanır.

xml
<!-- res/anim/bounce.xml -->
<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android"
    android:interpolator="@android:anim/bounce_interpolator">

    <translate
        android:fromYDelta="0%"
        android:toYDelta="-100%"
        android:duration="600" />

    <alpha
        android:fromAlpha="1.0"
        android:toAlpha="0.3"
        android:duration="600" />
</set>

XML dosyası AnimationUtils.loadAnimation() aracılığıyla yüklenir. Interpolator, parametrenin zaman içinde nasıl değiştiğini tanımlar: accelerate, decelerate, bounce, overshoot. Özel bir Interpolator, XML kaynağı @anim/interpolator_name aracılığıyla oluşturulur.

Ortak Nitelikler

Tüm Tween animasyonları nitelikleri destekler: duration (ms), startOffset (başlamadan önce gecikme), repeatCount, repeatMode (restart/reverse), fillEnabled, fillBefore, fillAfter, interpolator. fillAfter niteliği, View'ın tamamlandıktan sonra animasyonun son durumunda kalıp kalmayacağını belirler.

Kotlin Kod Örnekleri

Animasyonlar genellikle XML içinde tanımlansa da, Kotlin kullanılarak programlı olarak da oluşturulabilir. Programlı yaklaşım, dinamik parametreler için kullanışlıdır: şeffaflık değeri statik olarak tanımlanmak yerine uygulama durumuna bağlıdır.

kotlin
// Kotlin'de programlı olarak AlphaAnimation oluşturma
import android.view.animation.AlphaAnimation
import android.view.animation.Animation
import android.view.View

fun View.fadeOut(duration: Long = 500L, onEnd: () -> Unit = {}) {
    val animation = AlphaAnimation(1.0f, 0.0f).apply {
        this.duration = duration
        fillAfter = true
        setAnimationListener(object : Animation.AnimationListener {
            override fun onAnimationEnd(animation: Animation?) { onEnd() }
            override fun onAnimationStart(animation: Animation?) {}
            override fun onAnimationRepeat(animation: Animation?) {}
        })
    }
    startAnimation(animation)
}

// XML'den animasyon yükleme
val bounceAnim = AnimationUtils.loadAnimation(context, R.anim.bounce)
view.startAnimation(bounceAnim)

// AnimationSet — animasyonların birleştirilmesi
val set = AnimationSet(true).apply {
    addAnimation(TranslateAnimation(0f, 200f, 0f, 0f).apply { duration = 400 })
    addAnimation(RotateAnimation(0f, 360f).apply {
        duration = 400
        pivotX = view.width / 2f
        pivotY = view.height / 2f
    })
}
view.startAnimation(set)

startAnimation() yöntemi, animasyonu View'ın görüntüleme kuyruğuna ekler. İptal etmek için clearAnimation() kullanın. Önemli: fillAfter=true LayoutParams'i değiştirmez — startAnimation tekrar çağrıldığında, animasyon son görüntülenen durumdan değil, View'ın orijinal durumundan başlar.

View Animation Ne Zaman Kullanılmalı?

View Animation 2026'da dar bir uygulama alanına sahiptir: Property Animation'ın kararsız çalışabileceği Android 4.x (API 16-19) desteği; LayoutParams değişikliği gerektirmeyen basit görünme/kaybolma efektleri; tıklama uyuşmazlığının kritik olmadığı animasyonlar (örneğin, arka plan öğeleri). Diğer tüm durumlarda Google, ObjectAnimator veya AnimatorSet'e geçilmesini önerir.

Android Developers'a göre Property Animation, ara canvas kareleri oluşturmadığı için bellek açısından %15-20 daha verimlidir. View Animation'dan Property Animation'a geçiş, tıklama uyuşmazlığı sorununu da ortadan kaldırır: animasyondan sonra View, yeni konumunda dokunuşları alır.

Sıkça Sorulan Sorular

View Animation, Property Animation'dan nasıl farklıdır?

View Animation yalnızca View'ın görüntülemesini değiştirir — animasyondan sonra View, dokunma olayları için orijinal konumunda kalır. Property Animation nesnenin gerçek özelliklerini değiştirir, LayoutParams'i günceller ve tıklamaları yeni konumda doğru şekilde işler.

View Animation neden kullanımdan kaldırılmış sayılıyor?

Google, Android 3.0'dan (API 11) itibaren View Animation'ı kullanımdan kaldırılmış olarak ilan etti. Nedeni, tıklama uyuşmazlığı (click mismatch) ve rastgele nesne özelliklerini canlandıramamaktır. Property Animation bu sorunları çözer ve tüm yeni projeler için önerilir.

View Animation düğme animasyonları için kullanılabilir mi?

Kullanılabilir ancak önerilmez. TranslateAnimation sonrası bir düğme yeni bir konumda görünecek, ancak tıklamalar orijinal konumda kaydedilecektir. Düğmeler için Property Animation veya Jetpack Compose'da AnimatedVisibility ile composable kullanın.

View Animation programlı olarak nasıl iptal edilir?

view.clearAnimation() çağrısı yapın. Animasyon fillAfter=true ile başlatıldıysa, View son durumunda kalacaktır. Orijinal duruma zorla dönmek için clearAnimation() ve invalidate() çağrısı yapın.

Özet

  • View Animation — Android'de dört türü olan eski bir Tween animasyon sistemi: Alpha, Translate, Scale, Rotate
  • XML işaretlemesi res/anim/ içinde , , , öğeleri ve kök ile
  • AnimationSet ortak startOffset, duration, interpolator ile animasyonları birleştirir
  • Tıklama uyuşmazlığı — animasyon sonrası View, dokunma olayları için orijinal konumunda kalır
  • Property Animation — ObjectAnimator, AnimatorSet ile modern alternatif, gerçek özelliklerle çalışır
  • fillAfter View'ı son durumunda bırakır ancak LayoutParams'i değiştirmez
  • Geçiş Property Animation'a tıklama uyuşmazlığını ortadan kaldırır ve performansı %15-20 iyileştirir

Anahtar teslim bir mobil uygulama geliştireceğiz

IT Sectr, 2017'den beri girişimler ve işletmeler için iOS ve Android uygulamaları oluşturmaktadır. Size danışmanlık yapacak ve en iyi çözümü önereceğiz.

Projeyi tartış

Ayrıca okuyun