Android Animation Framework: Smooth Geçişler İçin Pratik Kodlar
Android'de kullanıcı arayüzünü canlı tutmanın en basit yolu animasyondur. View'ları hareket ettirmek, renk değiştirmek ya da boyutlarını değiştirmek için Animation Framework'ü kullanabilirsin.
En yaygın yöntem ObjectAnimator'dür. Bir View'ın özelliğini belirli bir sürede değiştirir ve düzgün bir geçiş sağlar.
1import android.animation.ObjectAnimator2import android.widget.TextView34val textView = findViewById<TextView>(R.id.myText)56// TextView'ı sağa 500 piksel hareket ettir, 1 saniyede7val animator = ObjectAnimator.ofFloat(textView, "translationX", 0f, 500f)8animator.duration = 1000 // milisaniye9animator.start()Beklenen çıktı: TextView ekranın sağına doğru yumuşak şekilde kaydığını görürsün.
Birden fazla özelliği aynı anda değiştirmek istersen AnimatorSet kullan:
1import android.animation.AnimatorSet23val scaleX = ObjectAnimator.ofFloat(textView, "scaleX", 1f, 1.5f)4val scaleY = ObjectAnimator.ofFloat(textView, "scaleY", 1f, 1.5f)5val alpha = ObjectAnimator.ofFloat(textView, "alpha", 1f, 0.5f)67val set = AnimatorSet()8set.playTogether(scaleX, scaleY, alpha) // hepsi aynı anda9set.duration = 80010set.start()Beklenen çıktı: TextView 0.8 saniyede büyür, şeffaf hale gelir.
Animasyonlar ardı ardına çalışmasını istersen playSequentially() kullan:
1val set = AnimatorSet()2set.playSequentially(scaleX, scaleY, alpha)3set.start()Interpolator ekleyerek animasyon hızını kontrol edebilirsin. Varsayılan lineer hızdır; AccelerateDecelerateInterpolator daha doğal görünür:
1import android.view.animation.AccelerateDecelerateInterpolator23val animator = ObjectAnimator.ofFloat(textView, "translationY", 0f, 200f)4animator.duration = 10005animator.interpolator = AccelerateDecelerateInterpolator()6animator.start()Beklenen çıktı: View aşağıya doğru hızlanarak hareket eder, sonra yavaşlar.
Sık yapılan hata: AnimatorListener eklemeyi unutmak. Animasyon bittiğinde bir işlem yapmak istiyorsan dinleyici ekle:
1animator.addListener(object: android.animation.Animator.AnimatorListener {2override fun onAnimationStart(animation: android.animation.Animator) {}3override fun onAnimationEnd(animation: android.animation.Animator) {4textView.text = "Bitti!"5}6override fun onAnimationCancel(animation: android.animation.Animator) {}7override fun onAnimationRepeat(animation: android.animation.Animator) {}8})Animasyonu tekrar ettirmek için repeatCount ve repeatMode ayarla:
1animator.repeatCount = 3 // 3 kez tekrar et2animator.repeatMode = ObjectAnimator.REVERSE // geri dönsün3animator.start()Animation Framework, basit geçişlerden karmaşık sekanslara kadar her şeyi kapsıyor. ObjectAnimator ile başla, ardından AnimatorSet ile birleştir.
0 yorum