View Animation — bu nima, Android-da Tween Animation

Muallif: IT Sectr Nashr etilgan: 2026-03-01 O'qish vaqti: 8 daq

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 — Tween Animation orqali View animatsiyasi: Alpha, Translate, Scale, Rotate
  • XML ta'rifi — animatsiyalar res/anim/ da , , , yordamida tavsiflanadi
  • AnimationSet — bir nechta animatsiyalarni umumiy parametrlar bilan bitta to'plamda birlashtirish
  • Cheklov — View Animation xossalarni emas, faqat renderlashni o'zgartiradi: View asl holatida qoladi
  • Property Animation — obyektlarning real xossalari bilan ishlaydigan zamonaviy o'rinbosar (Animator)

View Animation nima?

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 turlari

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

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.

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 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

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

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 vs Property Animation

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.

MezonView AnimationProperty Animation
API darajasiAPI 1+ (eskirgan)API 11+ (tavsiya etilgan)
Nimani animatsiya qiladiView renderlashi (canvas)Obyekt xossalari (setter)
Animatsiyadan keyin bosishAsl holatdaYangi holatda
Animatsiya turlari4 Tween + AnimationSetObjectAnimator, ValueAnimator, AnimatorSet
LayoutParamsO'zgartirmaydisetLayoutParams orqali o'zgartiradi
UnumdorlikYuqori (faqat canvas)O'rtacha (setter ga bog'liq)

Animatsiyalarning XML konfiguratsiyasi

View Animation odatda res/anim/ XML fayllarida (AnimationSet) ildiz elementi yoki to'rt turdan biri bilan belgilanadi. AnimationSet animatsiyalarni umumiy startOffset, duration, interpolator parametrlari bilan birlashtirishga imkon beradi.

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() orqali yuklanadi. Interpolator parametrning vaqt bo'yicha o'zgarish qonunini aniqlaydi: accelerate, decelerate, bounce, overshoot. Maxsus Interpolator @anim/interpolator_name XML resursi orqali yaratiladi.

Umumiy atributlar

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.

Kotlin da kod misollari

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
// 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 qachon ishlatiladi?

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 Property Animation dan nimasi bilan farq qiladi?

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.

Nega View Animation eskirgan hisoblanadi?

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.

Tugmalarni animatsiya qilish uchun View Animation dan foydalanish mumkinmi?

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 Animation ni dasturiy ravishda qanday bekor qilish mumkin?

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

  • View Animation — to'rt turdagi eskirgan Android Tween animatsiya tizimi: Alpha, Translate, Scale, Rotate
  • XML ta'rifi res/anim/ da , , , elementlari va ildiz bilan
  • AnimationSet animatsiyalarni umumiy startOffset, duration, interpolator bilan birlashtiradi
  • Bosish nomuvofiqligi — View animatsiyadan keyin teginish hodisalari uchun asl holatda qoladi
  • Property Animation — real xossalar bilan ishlaydigan ObjectAnimator, AnimatorSet orqali zamonaviy o'rinbosar
  • fillAfter View ni yakuniy holatda qoldiradi, lekin LayoutParams ni o'zgartirmaydi
  • Property Animation ga migratsiya bosish nomuvofiqligini bartaraf qiladi va unumdorlikni 15-20% yaxshilaydi

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.

Loyihani muhokama qilish

Shuningdek o'qing