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 — 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 — 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 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.
<!-- 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 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 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 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 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.
| Kriteriya | View Animation | Property Animation |
|---|---|---|
| API səviyyəsi | API 1+ (köhnəlmiş) | API 11+ (tövsiyə olunan) |
| Nəyi animasiya edir | View renderinqi (canvas) | Obyektin xassələri (setter) |
| Animasiyadan sonra klik | Orijinal mövqedə | Yeni mövqedə |
| Animasiya növləri | 4 Tween + AnimationSet | ObjectAnimator, ValueAnimator, AnimatorSet |
| LayoutParams | Dəyişmir | setLayoutParams vasitəsilə dəyişir |
| Performans | Yüksək (yalnız canvas) | Orta (setter-dən asılıdır) |
View Animation adətən res/anim/ XML fayllarında
<!-- 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.
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.
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-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 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 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.
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.
İ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.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ə
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.
Həm də oxuyun