#4 – Animasyon: Android te Animasyon Sınıfı ve Kullanımı, Resim Boyutunu Değiştirme ve Resmi Döndürme
Merhaba, bu yazımda Android’teki animasyon sınıfını anlatacak ve uygulamalı örneklerle, resimlerle destekleyip konuyu daha iyi anlatmaya ve sizin de daha iyi anlamanıza yardımcı olacağım.
[wpdm_file id=12]Animasyon(Animation) sınıfı android.view.animation paketi altında bulunur. Bunu yine şu şekilde kontrol edebilirsiniz: Eclipse te oluşturduğunuz herhangi bir projenin dosyalarında Android‘in bir sürümü vardır. Bu sürümün altında android.jar adlı dosyayı göreceksiniz. Buna tıklayıp altındaki paketlerden söylediğim paketi bulup Animation.class dosyasını görebilirsiniz.
Animasyon Kaynakları (Animation Resources)
Android teki animasyon kaynakları iki türdür. Bunlar:
1. Özellik Animasyonu (Propery Animation)
2. Görüntü Animasyonu (View Animation)
Özellik Animasyonu (Propery Animation)
Adından da anlaşılacağı üzere ; burada bir nesnenin özelliklerini değiştirerek animasyon oluşturuyoruz. Burda Animator lar kullanılır. Sonraki derslerim anlatacağım bu animasyon türünü.
Görüntü Animasyonu (View Animation)
Bu türde ise bir nesnenin (genellikle resim) görüntüsüne ait özellikleri değiştirerek animasyon oluşturuyoruz. Örnekle daha iyi anlayacaksınız, sabırlı olun.
Uygulama Örneğimiz: Örneğimizde bir buton ve bir imageview nesnesi olacak. Kullanıcı butona dokunduğu zaman gösterilen resim aynı anda hem büyüyecek hem de dönücek. Evet başlayalım.
Gerekli Adımlar:
1. Yeni bir proje oluşturun. İlk derste anlatmıştım, tekrar bakmak isterseniz.
2. /res klasörüne sağ tıklayıp sırasıyla New -> Folder seçeneklerine tıklayıp anim adında yeni bir dosya oluşturun. Bu dosya animasyon için gerekli kaynakları içerecek.
3. Oluşturduğumuz anim klasörüne sağ tıklayıp şunları takip edin: New -> Android XML File, yeni bir xml dosyası oluşturun. Ve içine şu kodları girin:
<?xml version="1.0" encoding="utf-8"?> <set xmlns:android="http://schemas.android.com/apk/res/android" android:fillAfter="true" android:interpolator="@android:anim/linear_interpolator" > <scale xmlns:android="http://schemas.android.com/apk/res/android" android:duration="4000" android:fromXScale="1" android:fromYScale="1" android:pivotX="50%" android:pivotY="50%" android:toXScale="4" android:toYScale="4" > </scale> <rotate android:duration="500" android:fromDegrees="0" android:toDegrees="360" android:pivotX="50%" android:pivotY="50%" android:repeatCount="infinite" /> </set>
<Set>
Bu bir container animasyon elementlerini tutmak taşımak için. (<sclae>, <rotate> ve diğerleri).
<scale>
Bu bir animasyon nesnesinin ölçeğini(boyutunu) temsil eder.
adroid:duration
Bu animasyon süresini belirttiğimiz parametredir.
android:fromXScale
Animasyonun başlayacağı x boyutu offset değeri. Biz 1 olarak kullandık bu değişmeyecek demektir.
android:fromYScale
Animasyonun başlayacağı x boyutu offset değeri. Biz 1 olarak kullandık bu değişmeyecek demektir.
android:pivotX
X koordinatını sabitleme. (%50 demekle nesne scale edilse bile x koordinatı değişmez.)
android:pivotY
Y koordinatını sabitleme. (%50 demekle nesne scale edilse bile y koordinatı değişmez.)
<rotate>
Bir animasyonun dönmesini temsil eder.
android:formDegrees
Nesnenin hangi dereceden başlayarak dönmesini istiyorsak bu parametreyi kullanarak belirtiyoruz.
androdi:toDegrees
Nesnenin hangi dereceye kadar dönmesini istiyorsak bu parametreyi kullanarak belirtiyoruz.
4. main.xml dosyasına şu kodları girin.
<?xml version="1.0" encoding="utf-8"?> <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="fill_parent" android:layout_height="fill_parent" > <ImageView android:id="@+id/imageview" android:layout_width="wrap_content" android:layout_height="wrap_content" android:src="@drawable/androidd" android:layout_centerInParent="true" /> <Button android:id="@+id/btnStart" android:layout_width="200dp" android:layout_height="wrap_content" android:text="Döndür ve Büyüt" android:layout_alignParentBottom="true" android:layout_centerHorizontal="true" android:layout_marginBottom="20dp"/> </RelativeLayout>
5. MainActivity.java dosyanıza aşağıdaki kodları girin.
package com.androidhocam.animation;import android.app.Activity; import android.os.Bundle; import android.view.View; import android.view.View.OnClickListener; import android.view.animation.Animation; import android.view.animation.AnimationUtils; import android.view.animation.Animation.AnimationListener; import android.widget.Button; import android.widget.ImageView;public class MainActivity extends Activity implements AnimationListener { ImageView imageview; Button donbuyut; Animation Animasyonumuz; protected void onCreate(Bundle savedInstanceState) { // TODO Auto-generated method stub super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); imageview = (ImageView) findViewById(R.id.imageview); donbuyut = (Button) findViewById(R.id.btnStart); Animasyonumuz = AnimationUtils.loadAnimation(getApplicationContext(), R.anim.together); Animasyonumuz.setAnimationListener(this); donbuyut.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { imageview.startAnimation(Animasyonumuz); } }); } @Override public void onAnimationEnd(Animation animation) { // Take any action after completing the animation // check for zoom in animation if (animation ==Animasyonumuz) { } } @Override public void onAnimationRepeat(Animation animation) { // TODO Auto-generated method stub } @Override public void onAnimationStart(Animation animation) { // TODO Auto-generated method stub } }
6. Projemize sağ tıklayıp Run as -> Android Application diyoruz.
Emülatör Çıktısı:
Android Evreni’nin bir yazısının daha sonuna geldik. Umarım bütün ziyaretçilerime yararı olur.
Yazıyı beğendiyseniz, beğen butonunu kullanarak ya da yorum yaparak belirtebilirsiniz.
Sorularınız veya yardıma ihtiyacınız varsa, yorum bırakınız.
Çok teşekkürler bu işime baya yarıyıcak kodlar kısmını bi şekilde hallediyorum ama ön plan cok sade kalıyo bunun gibi uygulamalara bakarak kendi projemi zenginleştirebilirim
yorum bırakarak beğeninizi ilettiğiniz için teşekkürler, derslerin devamı gelecek AndroidEvreni‘ni takip etmeye devam edin.
gerçekten guzel tesekkurler
android:startOffset=” ” ile hareketin ne zaman başlanacağı ayarlanıyor ancak bitmesi için hangi kodu kullanmam gerekir?
Grid view içine sayı yerine resim nasıl koyabiliriz…
merhaba, grid view ile bir galeri uygulaması örneği hazır kod bölümümüzde bulunmaktadır. Buradan indirip kodları inceleyebilirsiniz: Hazır Kod İndir Kolay gelsin.
teşşekkür ederim
elinize saglık hocam
bitmap kullanımı ile de bir döküman hazırlama ihtimaliniz varmı ?
merhaba animasyon=AnimationUtils.loadAnimation(getApplicationContext(),R.anim.together) şu komut da together dedigimiz şey naptıysam çıkmıyo bende bi fikriniz varmı acaba ?
Hocam together anim klasörünüze kaydettiğiniz animasyon xml dosyanızın adı olacak.
çok güzel çalışma tebrikler
tebrikler ve teşekkürler…
başarılarınınzın devamı dileğiyle 
merhaba Yusuf bey,
düşüncelerinizi bize ilettiğiniz için çok teşekkürler.
İyi Çalışmalar.
Mustafa BEy çalışmalarınızı çok beğenerek takip ediyor ve kodlarınızı da büyük bir zevkle tekrarlıyorum. Buradaki örnekte
public void onAnimationStart(Animation animation) {
// Take any action after completing the animation
// check for zoom in animation
if (animation ==Animasyonumuz) {
}
}
kalıbı olmadığı için başlangıç satırımız hata veriyor.
Bir de sizden ricam veritabanı işlemlerimizi web tabanlı olarak yapabileceğimiz bir örnek vermeniz. Şöyle ki apk uygulamamızdaki bilgileri webdeki bir veritabanımımızda tutmak istiyoruz. Bunu nasıl yapabilriiz?
merhaba, kusura bakmayın bir süredir blogumla ilgilenemiyorum. Yaşadığınız problem ile alakalı olarak:
Animasyon örneğinizde aktiviteniz ‘AnimationListener’ sınıfını implement ediyor mu?
2. sorunuz(datayı webden çekmek) için bir ders hazırlayıp yayınayacaktım ama ileride düşünüyordum önemli ve gerekli bir konu. Ama madem şimdiden böyle bir istek oldu yakın zamanda yayınlayacağım.
İyi Çalışmalar.
Harikasın