Android

Mevsimlere Ait Ayları ViewBinding Yöntemini Kullanarak Android Java Kodlarıyla Tasarlama

Android Studio programında tasarım ekranında kullanılan nesnelere java tarafında ulaşmak için bir kopyasını alıp oluşturmanız gerekir. Bu tip tanımlama işlemlerine DataBinding denir. Tasarım kısmında az nesne kullanıldığında kullanılabilir. Ancak nesnenin sayısı çoğaldığında java tarafından hem kod fazlalığı oluşacak hem de programın okunurluğu azalacaktır. Google tasarım kısmında tanımlı tüm nesnelere java tarafında tanımlama yapmadan ulaşmak için ViewBinding yöntemini geliştirmiştir. Bu yöntemle java tarafında herhangi bir tanımlama yapmanıza gerek kalmadan tüm nesnelere ulaşabilirsiniz. Bu uygulamamızda ViewBinding yöntemini kullanarak mevsimlere ait resimleri ve ayları görüntüleme işlemini gerçekleştireceğiz.

Android Studio programını açalım.

İsmi SeasonsList olan yeni bir proje oluşturalım.

Kurulumu kontrol etmek ve emülatörü yüklemek için projeyi çalıştıralım.

Uygulama başlıklarını ve sabit değerlerin belirlendiği işlemler için strings.xml dosyasını düzenleyelim.

<resources>
    <string name="app_name">Mevsimler</string>
    <string name="previous">GERİ</string>
    <string name="next">İLERİ</string>
</resources>

activity_main.xml dosyasını aşağıdaki gibi düzenleyelim.

<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout 
      xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    tools:context=".MainActivity">

    <TextView
        android:id="@+id/textView2"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_marginStart="40dp"
        android:layout_marginTop="48dp"
        android:textSize="30sp"
        app:layout_constraintStart_toStartOf="parent"
        app:layout_constraintTop_toTopOf="parent" />

    <ImageView
        android:id="@+id/imageView"
        android:layout_width="326dp"
        android:layout_height="296dp"
        android:layout_marginStart="36dp"
        android:layout_marginTop="116dp"
        android:scaleType="fitXY"
        app:layout_constraintEnd_toEndOf="parent"
        app:layout_constraintHorizontal_bias="0.0"
        app:layout_constraintStart_toStartOf="parent"
        app:layout_constraintTop_toTopOf="parent"
        tools:srcCompat="@tools:sample/avatars" />

    <TextView
        android:id="@+id/textView"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_marginStart="40dp"
        android:layout_marginTop="376dp"
        android:textSize="25sp"
        app:layout_constraintStart_toStartOf="parent"
        app:layout_constraintTop_toTopOf="@+id/imageView" />

    <Button
        android:id="@+id/button"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_marginStart="36dp"
        android:layout_marginBottom="56dp"
        android:onClick="previous_Click"
        android:text="GERİ"
        android:textSize="25sp"
        app:layout_constraintBottom_toBottomOf="parent"
        app:layout_constraintStart_toStartOf="parent" />

    <Button
        android:id="@+id/button2"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_marginEnd="36dp"
        android:layout_marginBottom="56dp"
        android:onClick="next_Click"
        android:text="İLERİ"
        android:textSize="25sp"
        app:layout_constraintBottom_toBottomOf="parent"
        app:layout_constraintEnd_toEndOf="parent" />

</androidx.constraintlayout.widget.ConstraintLayout>

Projede kullanılacak resim dosyalarını internetten indirelim. Ya da resimlere buradan ulaşabilirsiniz. Resimlere ilkbahar.jpg, yaz,jpg, sonbahar.jpg, kis.jpg isimlerini verelim. İsimlerin uzun ve karmaşık olmamasına dikkat edelim. Türkçe kararkter asla kullanmayalım. Resim dosyaları res klasörü altında drawable klasörüne taşıyalım. Taşıma işlemi yapılırken -v24 isimli klasör oluşturabilir. Bu klasörü silelim.

Gradle Scripts altındaki build.gradle (Module) dosyasını açınız ve android blokları arasına girerek viewBinding etkinleştirmek için gereken şu kodu ekleyiniz. Eğer buildFeatures bloğu varsa sadece viewBinding satırını ekleyiniz.

buildFeatures{
 viewBinding true;
}

MainActivity içine dönerek MainActivity sınıfının blokları arasına giriniz ve “private Bindig” yazınız. Öneriler arasında gelen “private ActivityMainBinding”e tıklayınız ve boşluk bırakıp, binding yazarak değişkenin adını tanımlayınız.

    private ActivityMainBinding binding;

MainActivity sınıfındayken onCreate yaşam döngüsüne giriniz ve “setContentView(R. layout.activity_main);” kodunu siliniz. Aynı blok içinde “super.onCreate(savedInstanceState);” kodunun altına geliniz ve şu kodları ekleyiniz:

        binding = ActivityMainBinding.inflate(getLayoutInflater());
        View view = binding.getRoot();
        setContentView(view);

java klasörü altındaki paket ismine sağ tuş ile tıklayarak yeni bir sınıf oluşturunuz. Sınıfa “Mevsim” ismini veriniz. Bu sınıfta hem görseller hem de görsellerin bilgileri tutulacaktır. Açılan sınıf içine bir adet String veri tipinde “bilgi” isimli değişken, bir adet int veri tipinde “siraNo” isimli bir değişken bir de “int” veri tipinde “foto” isimli bir değişken tanımlayınız.

public class Mevsim {
    String bilgi;
    int siraNo;
    int foto;
}

Resimleri tutacağınız foto isimli değişkenin int olmasının nedeni, drawable klasörüne atılan görsellerin her birine aslında birer “id” verilmesinden kaynaklanır. Bu numaralara MainActivity’deki onCreate metodu içinde “R.drawable.” yazılırsa erişilebilir. Resimlere ait id’ler bu sınıf içinde tutulur.

Mevsim sınıfının içine bir constructer oluşturunuz. Constructer, bir sınıf çağrıldığında ilk olarak çalıştırılacak metottur. Kodlarınızı şu şekilde yazınız:

    public Mevsim(String bilgi, int siraNo, int foto) {
        this.bilgi = bilgi;
        this.siraNo = siraNo;
        this.foto = foto;
    }

MainActivity.java sınıfının içine dönünüz. onCreate metodu içinde resimleri ve bilgileri sınıf üzerine ekleyiniz. Kodları şu şekilde yazınız:

Mevsim ilkbahar = new Mevsim("Mart, Nisan, Mayıs", 1, R.drawable.ilkbahar);
Mevsim yaz = new Mevsim("Haziran, Temmuz, Ağustos", 1, R.drawable.yaz);
Mevsim sonbahar = new Mevsim("Eylül, Ekim, Kasım", 1, R.drawable.sonbahar);
Mevsim kis = new Mevsim("Aralık, Ocak, Şubat", 1, R.drawable.kis);

Tanımlamalardan sonra bu verileri bir ArrayListe yüklemek gerektiğini unutmayınız. Bunun için onCreate metodunun dışına çıkıp, onCreate metodunun üzerinde fakat MainActivity blokları arasında olacak şekilde “ArrayList<Mevsim> mevsimler;” yazarak Mevsim sınıfından türetilen nesneleri tutacak mevsimler isimli bir ArrayList tanımlayınız. Ayrıca mevsim isimlerini tutacak String tipinde liste dizisini ve elemanlarını tanımlayınız. String[] liste = {"İlkbahar", "Yaz", "Sonbahar", "Kış"};.Tekrar onCreate içine girerek bu ArrayListi “mevsimler = new ArrayList<>();” kodlarını yazarak başlatınız. Mevsim sınıfından oluşturulan nesnelerin altında olacak biçimde de bu ArrayListe verileri gönderiniz. Kodları şu şekilde yazınız: 

        mevsimler.add(ilkbahar);
        mevsimler.add(yaz);
        mevsimler.add(sonbahar);
        mevsimler.add(kis);

Uygulama açılır açılmaz ilk mevsim olan ilkbahar adını textview nesnesine, resmi imageView üzerinde, ilk kayda ait bilginin de textView ekranında görünmesi için onCreate blokları arasında şu kodları yazınız:

        binding.textView2.setText(liste[0]);
        binding.imageView.setImageResource(mevsimler.get(0).foto);
        binding.textView.setText("Aylar :\n" + mevsimler.get(0).bilgi);

Ardından buttona tıkladıkça sıra numaralarını tutması için MainActivityde int veri tipinde mevsimNo isminde bir değişken tanımlayınız ve değişkenin değerini onCreate içinde 0 olarak atayınız. 

        mevsimNo = 0;

MainActivity.java dosyası içinde MainActivity sınıfı blokları arasına onCreate metodundan çıkarak “previous_Click” ve “next_Click” metotlarını hazırlayınız. Görünüme tıklandığı zaman çalışacağı için metotlar, View sınıfından v nesnesi şeklinde bir adet parametre alacaktır. Metotlar içinde mevsimNo değerini “previous_Click” metodunda 1 azaltıp “next_Click” metodunda 1 artırınız. Bu değişken sayesinde hangi ArrayList bilgisinin getirileceği bilinir. Ayrıca içeride birer kontrol kodu yazarak 0’dan büyük olmamasını veya ArrayListin eleman sayısından büyük olmamasını kontrol ediniz. “previous_Click” metodu için kodlar şu şekildedir:

public void previous_Click(View v) {
  if (mevsimNo > 0) {
      mevsimNo--;
      binding.textView2.setText(liste[mevsimNo]);
      binding.imageView.setImageResource(mevsimler.get(mevsimNo).foto);
      binding.textView.setText("Aylar :\n" + mevsimler.get(mevsimNo).bilgi);
  }
}

“next_Click” metodu için kodlar şu şekildedir:

public void next_Click(View v) {
  if (mevsimNo < mevsimler.size() - 1) {
     mevsimNo++;
     binding.textView2.setText(liste[mevsimNo]);
     binding.imageView.setImageResource(mevsimler.get(mevsimNo).foto);
     binding.textView.setText("Aylar :\n" + mevsimler.get(mevsimNo).bilgi);
  }
}

Uygulama çalıştırıldığında aşağıdaki görüntü elde edilir.


İlgili Makaleler
Gmail Hesabi Açmak, Gmail Kaydol, Yeni Bir Gmail Hesabı Oluşturma
Android Studio İçin Meb Sertifika Yükleme
Windows İşletim Sistemi İçin Android Studio Programının Kurulumu
Rastgele Üretilen Sayıyı WorkManager Sınıfında Bildirimle Gösteren Android Java Uygulaması
Belirtilen Aktiviteyi Bildirim Yardımıyla Açan Android Java Uygulaması
Euro 2024 Avrupa Şampiyonasında Ülkemizin Yer Aldığı Grubu TableLayout Kullanarak Gösteren Android Studio Uygulaması
Mevsimlere Ait Ayları ViewBinding Yöntemini Kullanarak Android Java Kodlarıyla Tasarlama
Yemek Siparişi Veren Form Sayfasını Code Sekmesini Kullanarak Android Studio Programında Yapma
Personele Ait Yaş Bilgisini Kapsülleyerek Tanımlayan Android Java Uygulaması
Üç Basamaklı Bir Sayının Üçe Bölünüp Bölünmediğini Kontrol Eden Android Java Uygulaması
Android Studio Programında Cleartext HTTP Traffic Not Permitted Hatasını Düzeltme
Android Studio Uygulamalarında Custom Rating Bar Oluşturma
Seçilen Resmi Arkaplan Olarak Ayarlayan Android Java Uygulaması
Ken Burns Animasyonlu Splash Ekranı Oluşturan Android Java Uygulaması
Beni Hatırla Seçeneğiyle Birlikte Kullanıcı Adı ve Şifre İşlemlerini Gerçekleştiren Android Java Uygulaması
Android Studio Programında Belirtilen Özelliklerde Emulator Kurulumu
Ksoap Kütüphanesini Android Studio Projesine Dahil Etme
Android Studio Programında SharedPreferenc Sınıfı Oluşturma
Android Studio Programında UrunlerDb Yerel Veri Tabanında Urunler Tablosunu Oluşturma
Android Studio Programında UrunlerDb Yerel Veri Tabanında Urunler Tablosundaki Verileri Listeleme

Yorum Ekle
   
Kötü İyi