View Animation — bu nədir, Android-də Tween Animation

Müəllif: IT Sectr Dərc olunub: 2026-03-01 Oxuma vaxtı: 8 dəq

View Animation — Android API 1+ ilə işləyən, View obyektlərini Tween Animation (Alpha, Translate, Scale, Rotate) vasitəsilə animasiya edən köhnəlmiş sistemdir. Google bütün yeni layihələr üçün Property Animation (Animator) tövsiyə edir. Məqalə prinsipləri, növləri, XML konfiqurasiyasını və imtina səbəblərini izah edir.

Əsaslar

  • View Animation — Tween Animation vasitəsilə View animasiyası: Alpha, Translate, Scale, Rotate
  • XML təyini — animasiyalar res/anim/ qovluğunda , , , ilə təsvir edilir
  • AnimationSet — bir neçə animasiyanın ümumi parametrlərlə bir dəstdə birləşməsi
  • Məhdudiyyət — View Animation xassələri deyil, yalnız renderinqi dəyişir: View orijinal mövqeyində qalır
  • Property Animation — obyektlərin real xassələri ilə işləyən müasir əvəzedici (Animator)

View Animation nədir?

View Animation — View səviyyəsində işləyən Android animasiya alt sistemi (API 1+). Dörd növ Tween Animation istifadə edir: AlphaAnimation (şəffaflıq), TranslateAnimation (yer dəyişmə), ScaleAnimation (miqyas) və RotateAnimation (fırlanma). Hər animasiya res/anim/ qovluğunda XML faylında təsvir edilir və ya Kotlin kodunda proqram şəkildə yaradılır.

View Animation mexanizmi View-in real xassələrini dəyişmir — View-i yeni mövqedə, miqyasda və ya şəffaflıqda yenidən çəkir, lakin onTouchEvent() geri çağırışı orijinal yerləşmənin koordinatlarını qəbul edir. Bu, click mismatch (klik uyğunsuzluğu) kimi tanınan əsas məhdudiyyətdir.

Android Developer Documentation (2026) görə, Google View Animation-ı Android 3.0 (API 11) versiyasından etibarən köhnəlmiş API kimi qeyd edir. Yeni layihələr üçün obyektlərin real xassələri ilə setter metodları vasitəsilə işləyən Property Animation — Animator, AnimatorSet və ObjectAnimator tövsiyə olunur.

Tween Animation növləri

Tween Animation — açar kadrlar arasında animasiya: başlanğıc və son vəziyyəti təyin edirsiniz, sistem isə aralıq kadrları hesablayır. Android hər biri öz parametrlər dəsti ilə dörd standart növ təqdim edir.

AlphaAnimation

AlphaAnimation View-in şəffaflığını fromAlpha-dan toAlpha-ya qədər dəyişir. Qiymətlər 0.0 (tamamilə şəffaf) ilə 1.0 (tamamilə görünən) arasında dəyişir. Susmaya görə animasiya 300 ms davam edir. fillAfter=true parametri View-i son şəffaflıq vəziyyətində saxlayı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 View-i başlanğıc mövqedən (fromXDelta, fromYDelta) son mövqeyə (toXDelta, toYDelta) köçürür. Qiymətlər piksel, valideynin faizi və ya View-in özünün faizi ilə verilir. Məsələn, 100% View-in eninin 100%-i deməkdir.

ScaleAnimation

ScaleAnimation View-i pivotX/pivotY nöqtəsinə nisbətən miqyaslayır. fromXScale=1.0, toXScale=2.0 eni iki dəfə artırır. pivotType parametri pivotun nəyə nisbətən hesablandığını müəyyən edir: self, parent və ya absolute. Miqyas animasiyası View-in real ölçülərini deyil, yalnız renderinqi dəyişir.

RotateAnimation

RotateAnimation View-i pivot nöqtəsi ətrafında fromDegrees-dən toDegrees-ə qədər bucaqla fırladır. Bucaq dərəcələrlə ölçülür: 0 — başlanğıc mövqe, 360 — tam dönmə. Sonsuz fırlanma üçün repeatCount=INFINITE istifadə edin.

View Animation vs Property Animation

View Animation və Property Animation (Animator) arasındakı fərq — Android animasiya arxitekturasında əsas fərqdir. View Animation yalnız renderinqlə işləyir, Property Animation isə setter metodları vasitəsilə obyektin real xassələrini dəyişir, bu da layout-un yenilənməsinə səbəb olur.

KriteriyaView AnimationProperty Animation
API səviyyəsiAPI 1+ (köhnəlmiş)API 11+ (tövsiyə olunan)
Nəyi animasiya edirView renderinqi (canvas)Obyektin xassələri (setter)
Animasiyadan sonra klikOrijinal mövqedəYeni mövqedə
Animasiya növləri4 Tween + AnimationSetObjectAnimator, ValueAnimator, AnimatorSet
LayoutParamsDəyişmirsetLayoutParams vasitəsilə dəyişir
PerformansYüksək (yalnız canvas)Orta (setter-dən asılıdır)

Animasiyaların XML konfiqurasiyası

View Animation adətən res/anim/ XML fayllarında (AnimationSet) kök elementi və ya dörd növdən biri ilə təyin edilir. AnimationSet animasiyaları ümumi startOffset, duration, interpolator parametrləri ilə birləşdirməyə imkan verir.

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 faylı AnimationUtils.loadAnimation() vasitəsilə yüklənir. Interpolator parametrin zamanla dəyişmə qanununu müəyyən edir: accelerate, decelerate, bounce, overshoot. Xüsusi Interpolator @anim/interpolator_name XML resursu vasitəsilə yaradılır.

Ümumi atributlar

Bütün Tween animasiyaları aşağıdakı atributları dəstəkləyir: duration (ms), startOffset (başlamadan əvvəl gecikmə), repeatCount, repeatMode (restart/reverse), fillEnabled, fillBefore, fillAfter, interpolator. fillAfter atributu View-in animasiya bitdikdən sonra son vəziyyətdə qalıb-qalmadığını müəyyən edir.

Kotlin-də kod nümunələri

Animasiyalar adətən XML-də təyin edilsə də, onları Kotlin vasitəsilə proqram şəkildə də yaratmaq olar. Proqram yanaşması dinamik parametrlər üçün faydalıdır: şəffaflıq dəyəri tətbiqin vəziyyətindən asılıdır, statik təyin olunmur.

kotlin
// Kotlin-də AlphaAnimation-ın proqram şəkildə yaradılması
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)
}

// Animasiyanın XML-dən yüklənməsi
val bounceAnim = AnimationUtils.loadAnimation(context, R.anim.bounce)
view.startAnimation(bounceAnim)

// AnimationSet — animasiyaların kombinasiyası
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() metodu animasiyanı View-in renderinq növbəsinə əlavə edir. Ləğv etmək üçün clearAnimation() istifadə olunur. Vacib: fillAfter=true LayoutParams-i dəyişmir — startAnimation təkrar çağırıldıqda animasiya View-in son render edilmiş vəziyyətindən deyil, başlanğıc vəziyyətindən başlayır.

View Animation nə vaxt istifadə edilməlidir?

View Animation 2026-cı ildə dar tətbiq sahəsinə malikdir: Property Animation-ın qeyri-sabit işləyə biləcəyi Android 4.x (API 16-19) dəstəyi; LayoutParams dəyişməsini tələb etməyən sadə görünmə/gizlənmə effektləri; klik uyğunsuzluğunun kritik olmadığı animasiyalar (məsələn, fon elementləri). Bütün digər hallarda Google ObjectAnimator və ya AnimatorSet-ə keçməyi tövsiyə edir.

Android Developers-ə görə, Property Animation yaddaş istifadəsi baxımından 15-20% daha səmərəlidir, çünki aralıq canvas çərçivələri yaratmır. View Animation-dan Property Animation-a keçid həmçinin klik uyğunsuzluğu problemini aradan qaldırır: animasiyadan sonra View toxunuşları yeni mövqedə qəbul edir.

Tez-tez verilən suallar

View Animation Property Animation-dan nə ilə fərqlənir?

View Animation yalnız View-in renderinqini dəyişir — animasiyadan sonra View toxunma hadisələri üçün orijinal mövqedə qalır. Property Animation obyektin real xassələrini dəyişir, bu da LayoutParams-i yeniləyir və klikləri yeni mövqedə düzgün emal edir.

Niyə View Animation köhnəlmiş sayılır?

Google View Animation-ı Android 3.0 (API 11) versiyasından köhnəlmiş elan edib. Səbəb — klik uyğunsuzluğu (click mismatch) və obyektlərin ixtiyari xassələrini animasiya edə bilməməsidir. Property Animation bu problemləri həll edir və bütün yeni layihələr üçün tövsiyə olunur.

Düymələrin animasiyası üçün View Animation istifadə edilə bilərmi?

İstifadə etmək olar, lakin tövsiyə edilmir. TranslateAnimation-dən sonra düymə yeni yerdə göstəriləcək, lakin kliklər orijinal mövqedə işləyəcək. Düymələr üçün Property Animation və ya Jetpack Compose-da AnimatedVisibility komponentindən istifadə edin.

View Animation proqram şəkildə necə ləğv edilir?

view.clearAnimation() çağırın. Animasiya fillAfter=true ilə işə salınıbsa, View son vəziyyətdə qalacaq. Başlanğıc vəziyyətə məcburi qayıtmaq üçün clearAnimation() və invalidate() çağırın.

Nəticə

  • View Animation — dörd növü olan köhnəlmiş Android Tween animasiya sistemi: Alpha, Translate, Scale, Rotate
  • XML təyini res/anim/ qovluğunda , , , elementləri və kök ilə
  • AnimationSet animasiyaları ümumi startOffset, duration, interpolator ilə birləşdirir
  • Klik uyğunsuzluğu — View animasiyadan sonra toxunma hadisələri üçün orijinal mövqedə qalır
  • Property Animation — real xassələrlə işləyən ObjectAnimator, AnimatorSet vasitəsilə müasir əvəzedici
  • fillAfter View-i son vəziyyətdə saxlayır, lakin LayoutParams-i dəyişmir
  • Property Animation-a miqrasiya klik uyğunsuzluğunu aradan qaldırır və performansı 15-20% yaxşılaşdırır

Açar təslim mobil tətbiq hazırlayacağıq

IT Sectr 2017-ci ildən startaplar və bizneslər üçün iOS və Android tətbiqləri yaradır. Sizə məsləhət verəcəyik və ən yaxşı həlli təklif edəcəyik.

Layihəni müzakirə et

Həm də oxuyun