View Animation — Android API 1+ bilan ishlaydigan, View obyektlarini Tween Animation (Alpha, Translate, Scale, Rotate) orqali animatsiya qiladigan eskirgan tizim. Google barcha yangi loyihalar uchun Property Animation (Animator) ni tavsiya qiladi. Maqola printsiplar, turlar, XML konfiguratsiyasi va voz kechish sabablarini tushuntiradi.
Asosiy
View Animation — View darajasida ishlaydigan Android animatsiya quyi tizimi (API 1+). U to'rt turdagi Tween Animation dan foydalanadi: AlphaAnimation (shaffoflik), TranslateAnimation (siljitish), ScaleAnimation (masshtab) va RotateAnimation (aylantirish). Har bir animatsiya res/anim/ papkasidagi XML faylda tavsiflanadi yoki Kotlin kodida dasturiy ravishda yaratiladi.
View Animation mexanizmi View ning real xossalarini o'zgartirmaydi — View ni yangi holatda, masshtabda yoki shaffoflikda qayta chizadi, ammo onTouchEvent() qayta chaqiruvi asl joylashuv koordinatalarini qabul qiladi. Bu asosiy cheklov bo'lib, click mismatch (bosish nomuvofiqligi) deb nomlanadi.
Android Developer Documentation (2026) ga ko'ra, Google View Animation ni Android 3.0 (API 11) dan boshlab eskirgan API deb belgilaydi. Yangi loyihalar uchun setter metodlari orqali obyektlarning real xossalari bilan ishlaydigan Property Animation — Animator, AnimatorSet va ObjectAnimator tavsiya etiladi.
Tween Animation — kalit kadrlar “orasida” animatsiya: boshlang'ich va yakuniy holatni belgilaysiz, tizim esa oraliq kadrlarni hisoblab chiqadi. Android har biri o'z parametrlar to'plamiga ega to'rt standart turni taqdim etadi.
AlphaAnimation View ning shaffofligini fromAlpha dan toAlpha gacha o'zgartiradi. Qiymatlar 0.0 (to'liq shaffof) dan 1.0 (to'liq ko'rinadigan) gacha. Odatiy bo'lib, animatsiya 300 ms davom etadi. fillAfter=true parametri View ni yakuniy shaffoflik holatida qoldiradi.
<!-- 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 ni boshlang'ich holatdan (fromXDelta, fromYDelta) yakuniy holatga (toXDelta, toYDelta) siljitadi. Qiymatlar piksel, ota-onaning foizi yoki View ning o'z foizida beriladi. Masalan, 100% View kengligining 100% ini bildiradi.
ScaleAnimation View ni pivotX/pivotY nuqtasiga nisbatan masshtablaydi. fromXScale=1.0, toXScale=2.0 kenglikni ikki baravar oshiradi. pivotType parametri pivot nimaga nisbatan hisoblanishini aniqlaydi: self, parent yoki absolute. Masshtab animatsiyasi View ning real o'lchamlarini o'zgartirmaydi — faqat renderlashni o'zgartiradi.
RotateAnimation View ni pivot nuqtasi atrofida fromDegrees dan toDegrees gacha burchak bilan aylantiradi. Burchak darajalarda o'lchanadi: 0 — boshlang'ich holat, 360 — to'liq aylanish. Cheksiz aylanish uchun repeatCount=INFINITE dan foydalaning.
View Animation va Property Animation (Animator) o'rtasidagi farq — Android animatsiya arxitekturasidagi asosiy farqdir. View Animation faqat renderlash bilan ishlaydi, Property Animation esa setter metodlari orqali obyektning real xossalarini o'zgartiradi, bu layout yangilanishiga olib keladi.
| Mezon | View Animation | Property Animation |
|---|---|---|
| API darajasi | API 1+ (eskirgan) | API 11+ (tavsiya etilgan) |
| Nimani animatsiya qiladi | View renderlashi (canvas) | Obyekt xossalari (setter) |
| Animatsiyadan keyin bosish | Asl holatda | Yangi holatda |
| Animatsiya turlari | 4 Tween + AnimationSet | ObjectAnimator, ValueAnimator, AnimatorSet |
| LayoutParams | O'zgartirmaydi | setLayoutParams orqali o'zgartiradi |
| Unumdorlik | Yuqori (faqat canvas) | O'rtacha (setter ga bog'liq) |
View Animation odatda res/anim/ XML fayllarida
<!-- 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() orqali yuklanadi. Interpolator parametrning vaqt bo'yicha o'zgarish qonunini aniqlaydi: accelerate, decelerate, bounce, overshoot. Maxsus Interpolator @anim/interpolator_name XML resursi orqali yaratiladi.
Barcha Tween animatsiyalari quyidagi atributlarni qo'llab-quvvatlaydi: duration (ms), startOffset (boshlanishdan oldin kechikish), repeatCount, repeatMode (restart/reverse), fillEnabled, fillBefore, fillAfter, interpolator. fillAfter atributi View animatsiya tugagandan so'ng yakuniy holatda qoladimi yoki yo'qmi, aniqlaydi.
Animatsiyalar odatda XML da belgilansa ham, ularni Kotlin orqali dasturiy ravishda yaratish mumkin. Dasturiy yondashuv dinamik parametrlar uchun foydali: shaffoflik qiymati ilova holatiga bog'liq, statik belgilanmagan.
// Kotlin da AlphaAnimation ni dasturiy yaratish
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)
}
// Animatsiyani XML dan yuklash
val bounceAnim = AnimationUtils.loadAnimation(context, R.anim.bounce)
view.startAnimation(bounceAnim)
// AnimationSet — animatsiyalar kombinatsiyasi
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() metodi animatsiyani View renderlash navbatiga qo'shadi. Bekor qilish uchun clearAnimation() ishlatiladi. Muhim: fillAfter=true LayoutParams ni o'zgartirmaydi — startAnimation qayta chaqirilganda animatsiya View ning oxirgi renderlangan holatidan emas, balki boshlang'ich holatidan boshlanadi.
View Animation 2026 yilda tor qo'llanish doirasiga ega: Property Animation beqaror ishlashi mumkin bo'lgan Android 4.x (API 16-19) qo'llab-quvvatlash; LayoutParams o'zgarishini talab qilmaydigan oddiy paydo bo'lish/yo'qolish effektlari; bosish nomuvofiqligi muhim bo'lmagan animatsiyalar (masalan, fon elementlari). Boshqa barcha hollarda Google ObjectAnimator yoki AnimatorSet ga o'tishni tavsiya qiladi.
Android Developers ga ko'ra, Property Animation xotira ishlatish bo'yicha 15-20% samaraliroq, chunki oraliq canvas kadrlarini yaratmaydi. View Animation dan Property Animation ga o'tish bosish nomuvofiqligi muammosini ham bartaraf qiladi: animatsiyadan keyin View teginishlarni yangi holatda qabul qiladi.
Tez-tez beriladigan savollar
View Animation faqat View renderlashni o'zgartiradi — animatsiyadan keyin View teginish hodisalari uchun asl holatda qoladi. Property Animation obyektning real xossalarini o'zgartiradi, bu LayoutParams ni yangilaydi va bosishlarni yangi holatda to'g'ri qayta ishlaydi.
Google View Animation ni Android 3.0 (API 11) dan eskirgan deb e'lon qilgan. Sabab — bosish nomuvofiqligi (click mismatch) va obyektlarning ixtiyoriy xossalarini animatsiya qila olmaslik. Property Animation bu muammolarni hal qiladi va barcha yangi loyihalar uchun tavsiya etiladi.
Foydalanish mumkin, lekin tavsiya etilmaydi. Tugma TranslateAnimation dan keyin yangi joyda ko'rsatiladi, ammo bosishlar asl holatda ishlaydi. Tugmalar uchun Property Animation yoki Jetpack Compose dagi AnimatedVisibility komponentidan foydalaning.
view.clearAnimation() ni chaqiring. Animatsiya fillAfter=true bilan ishga tushirilgan bo'lsa, View yakuniy holatda qoladi. Boshlang'ich holatga majburiy qaytish uchun clearAnimation() va invalidate() ni chaqiring.
Xulosa
Biz kalit topshirig'i bilan mobil ilovani ishlab chiqamiz
IT Sectr 2017-yildan beri startaplar va korxonalar uchun iOS va Android ilovalarini yaratadi. Biz sizga maslahat beramiz va eng yaxshi yechimni taklif qilamiz.