Bu makalede, Android platformunda basit bir yazı-tura uygulaması nasıl oluşturulur, adım adım açıklayacağım. Yazı-tura uygulaması, temel bir uygulama geliştirme becerisi kazanmanın harika bir yoludur. Bu uygulama ile, kullanıcılar telefonlarında yazı-tura atabilir ve sonucu görebilirler.
Öncelikle, projemizi oluştururken, kullanıcı arayüzü tasarımında drawable
klasörüne eklediğimiz masa, tura ve yazı resimlerini kullanacağız. Bu resimler, uygulamamıza görsel bir çekicilik katacak ve kullanıcı deneyimini artıracak.
Adım 1: Proje Oluşturma ve Kaynak Dosyalarının Eklenmesi
İlk olarak, Android Studio’yu açın ve yeni bir proje oluşturun. Proje oluştururken, “Empty Activity” şablonunu seçin. Projeyi oluşturduktan sonra, sol taraftaki “Project” panelinde res
klasörü altında drawable
klasörü bulunur. Bu klasöre, uygulamada kullanacağımız resim dosyalarını (masa.jpg, tura.png ve yazi.png gibi) ekleyin. Bu resimler, uygulamanızda görsel olarak kullanılacak olan yazı-tura simgeleridir.
Adım 2: Tasarım Dosyasının Oluşturulması
Tasarım dosyası olan activity_main.xml
dosyasını açın ve içeriği verilen XML kodu ile doldurun. Bu XML kodu, kullanıcı arayüzünün görünümünü ve düzenini belirler. İlgili nesneleri (ImageView
, Button
vb.) id
özelliği ile tanımlayarak, Java koduyla bağlamak için referans alacağız.

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 | <?xml version="1.0" encoding="utf-8"?> <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" android:background="@drawable/masa" tools:context=".MainActivity"> <ImageView android:id="@+id/coin_image" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_centerHorizontal="true" android:layout_marginTop="40dp" android:src="@drawable/tura" /> <Button android:id="@+id/flip_button" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_below="@id/coin_image" android:layout_centerHorizontal="true" android:layout_marginTop="32dp" android:text="YAZI TURA" android:textSize="24sp" android:padding="16dp" /> </RelativeLayout> |
Adım 3: Java Kodunun Yazılması
Şimdi, yazı-tura uygulamasının işlevselliğini Java koduyla oluşturalım. MainActivity.java
dosyasını açın ve onCreate
metodu içinde gerekli nesnelerin referanslarını alın. Ardından, flipCoin()
gibi işlevleri tanımlayın. flipCoin()
işlevi, yazı-tura atmayı gerçekleştirecek ve sonucu ekranda gösterecek.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 | package com.example.yazitura; import android.os.Bundle; import android.view.View; import android.widget.Button; import android.widget.ImageView; import androidx.appcompat.app.AppCompatActivity; import java.util.Random; public class MainActivity extends AppCompatActivity { // ImageView ve Button nesneleri tanımlanır. private ImageView coinImage; private Button flipButton; // Random nesnesi tanımlanır. private Random random; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); // XML dosyasındaki nesneler Java koduna bağlanır. coinImage = findViewById(R.id.coin_image); flipButton = findViewById(R.id.flip_button); // Random nesnesi oluşturulur. random = new Random(); // Flip butonuna tıklama dinleyicisi eklenir. flipButton.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { flipCoin(); } }); } // Yazı-tura atma işlevini gerçekleştiren metot. private void flipCoin() { // Random nesnesiyle 0 veya 1 arasında rastgele bir sayı üretilir. int result = random.nextInt(2); // Rastgele sayının 0 veya 1 olduğuna bağlı olarak sonuç belirlenir. if (result == 0) { // 0 ise yazı, resim olarak "yazi.png" atanır. coinImage.setImageResource(R.drawable.yazi); } else { // 1 ise tura, resim olarak "tura.png" atanır. coinImage.setImageResource(R.drawable.tura); } } } |
Adım 3: Animasyonların Eklenmesi
Şimdi, animasyonlarımızı kullanarak butona tıklandığında efektler ekleyeceğiz. Bunun için öncelikle anim
klasörüne animasyon dosyası ekledik: anim1.xml
ve anim2.xml
vb.
anim1.xml:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 | <?xml version="1.0" encoding="utf-8"?> <set xmlns:android="http://schemas.android.com/apk/res/android" android:fillAfter="true"> <rotate android:duration="200" android:fromDegrees="0" android:pivotX="50%" android:pivotY="50%" android:toDegrees="360" android:rotationX="180" android:rotationY="180" android:rotation="180"/> </set> |
Yukarıdaki animasyonları tanımladıktan sonra, Java kodumuza eklediğimiz playAnimation()
fonksiyonu ile bu animasyonları butona tıklama olayında oynatacağız. Güncellenmiş Java kodu aşağıdaki gibidir:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 | package com.example.yazitura; import android.os.Bundle; import android.view.View; import android.view.animation.Animation; import android.view.animation.AnimationUtils; import android.widget.Button; import android.widget.ImageView; import androidx.appcompat.app.AppCompatActivity; import java.util.Random; public class MainActivity extends AppCompatActivity { private ImageView coinImage; private Button flipButton; private Random random; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); coinImage = findViewById(R.id.coin_image); flipButton = findViewById(R.id.flip_button); random = new Random(); flipButton.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { playAnimation(); flipCoin(); } }); } private void playAnimation() { // Resmin dönme animasyonunu yükleme Animation animation = AnimationUtils.loadAnimation(getApplicationContext(), R.anim.anim1); // Resme animasyonu uygulama coinImage.startAnimation(animation); } private void flipCoin() { // Yazı veya tura belirleme int result = random.nextInt(2); if (result == 0) { coinImage.setImageResource(R.drawable.yazi); } else { coinImage.setImageResource(R.drawable.tura); } } } |
Tüm kodları açıklayalım:
MainActivity
sınıfı oluşturulur veAppCompatActivity
sınıfından türetilir. Bu, Android uygulamamızın ana aktivitesidir.coinImage
,flipButton
verandom
değişkenleri tanımlanır.coinImage
, XML dosyasındaki para resmini görüntülemek için,flipButton
ise yazı-tura atma işlemini başlatmak için kullanılır.random
, rastgele bir sonuç üretmek için kullanılır.onCreate()
yöntemi, aktivite başlatıldığında çağrılan ana yöntemdir. Bu yöntem içinde gerekli nesnelerin referansları alınır ve tıklama olayları dinleyicilere atanır.playAnimation()
fonksiyonu, para resminin dönme animasyonunu başlatır.AnimationUtils.loadAnimation()
metodunu kullanarakanim1.xml
dosyasından animasyonu yükler ve resme bu animasyonu uygular.flipCoin()
fonksiyonu, kullanıcının yazı-tura atma işlemi gerçekleştirdiği zaman çağrılır. Bu fonksiyon, rastgele bir sayı üretir ve bu sayının 0 veya 1 olmasına bağlı olarak para resmine yazı veya tura resmini atar.
Bu kod parçacığı, kullanıcının bir düğmeye tıkladığında para resmindeki dönme animasyonunu başlatarak yazı-tura atma işlemini gerçekleştirir. Böylece kullanıcıya daha etkileyici ve eğlenceli bir deneyim sunar.
Kullanabileceğiniz farklı animasyonlar. anim1.xml dosyası içeriğini aşağıdaki animasyonlar ile değiştirebilirsiniz.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 | <?xml version="1.0" encoding="utf-8"?> <set xmlns:android="http://schemas.android.com/apk/res/android" android:fillAfter="true" > <rotate android:duration="200" android:fromDegrees="0" android:pivotX="50%" android:pivotY="50%" android:toDegrees="360" /> <scale android:interpolator="@android:anim/linear_interpolator" android:duration = "300" android:fromXScale = ".2" android:fromYScale = "1" android:pivotX = "50%" android:pivotY = "50%" android:toXScale = "2" android:toYScale = "2"/> <scale android:interpolator="@android:anim/linear_interpolator" android:duration = "300" android:fromXScale = "1" android:fromYScale = "1" android:pivotX = "50%" android:pivotY = "50%" android:toXScale = ".5" android:toYScale = ".5"/> </set> |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 | <?xml version="1.0" encoding="utf-8"?> <set xmlns:android="http://schemas.android.com/apk/res/android" android:fillAfter="true"> <!-- 360 derece dönme animasyonu --> <rotate android:duration="200" android:fromDegrees="0" android:pivotX="50%" android:pivotY="50%" android:toDegrees="360" /> <!-- Zoom out animasyonu --> <scale android:interpolator="@android:anim/linear_interpolator" android:duration="300" android:fromXScale="1" android:fromYScale="1" android:pivotX="50%" android:pivotY="50%" android:toXScale="0.5" android:toYScale="0.5" /> <!-- Zoom in animasyonu --> <scale android:interpolator="@android:anim/linear_interpolator" android:duration="300" android:fromXScale="0.5" android:fromYScale="0.5" android:pivotX="50%" android:pivotY="50%" android:toXScale="2" android:toYScale="2" /> </set> |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 | <?xml version="1.0" encoding="utf-8"?> <set xmlns:android="http://schemas.android.com/apk/res/android"> <rotate android:duration="200" android:fromDegrees="0" android:pivotX="50%" android:pivotY="50%" android:toDegrees="360" /> <rotate android:duration="200" android:fromDegrees="360" android:pivotX="50%" android:pivotY="50%" android:startOffset="5000" android:toDegrees="0" /> </set> |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 | <?xml version="1.0" encoding="utf-8"?> <set xmlns:android="http://schemas.android.com/apk/res/android" android:fillAfter="true"> <rotate android:duration="200" android:fromDegrees="0" android:pivotX="50%" android:pivotY="50%" android:toDegrees="360" android:rotationX="0" android:rotationY="0" /> <scale android:interpolator="@android:anim/linear_interpolator" android:duration="300" android:fromXScale=".2" android:fromYScale="1" android:pivotX="50%" android:pivotY="50%" android:toXScale="2" android:toYScale="2"/> <scale android:interpolator="@android:anim/linear_interpolator" android:duration="300" android:fromXScale="1" android:fromYScale="1" android:pivotX="50%" android:pivotY="50%" android:toXScale=".5" android:toYScale=".5"/> <rotate android:duration="200" android:fromDegrees="0" android:pivotX="50%" android:pivotY="50%" android:toDegrees="360" android:rotationX="0" android:rotationY="0" /> </set> |
Yorum Yap