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
Windows İşletim Sistemi İçin Android Studio Programının Kurulumu
Android Studio Programında Nesnelere Ait Gravity, Layout Gravity ve Layout Weight Özellikleri
Android Studio Uygulamalarında Intent Kullanımı
Android Studio Programında Kullanılan EditText Nesnesi ve Özellikleri
Girilen Şehir Adını Görüntüleyen Uygulamayı Android Studio Programında Yapınız
Mevsimlere Ait Ayları ViewBinding Yöntemini Kullanarak Android Java Kodlarıyla Tasarlama
Herhangi Bir Kütüphane Kullanmadan Android Studio Programında Dairesel Bir ImageView Nasıl Oluşturulur
Android Java Application Using TabbedActivty and Fragment to Login Username and Password
Gmail Hesabi Açmak, Gmail Kaydol, Yeni Bir Gmail Hesabı Oluşturma
Android Studio İçin Meb Sertifika Yükleme
Android Studio Programı Açılışta En Son Projeyi Açmasın Özelliğini Değiştirme
RecyclerView ve CardView Kullanarak Havaalanlarını Listeleyen Android Java Uygulaması
ListView Nesnesinde Tıklanan Elemanı Gösteren Android Java Uygulaması
Rastgele Üretilen Sayıyı WorkManager Sınıfında Bildirimle Gösteren Android Java Uygulaması
Android Studio Programında ProgressBar Kullanımı
Android Studio Programında ConstraintLayout Kullanımı
Android Studio Programında Verilerin Saklanması ve İşlenmesi
Android Studio Programında UrunlerDb Yerel Veri Tabanında Urunler Tablosunu Oluşturma
Programatik Olarak Resme Animasyon Uygulayan Android Java Uygulaması
ListView Nesnesinde Listelenen İsimlerden Seçilen Birden Fazla İsmi Görüntüleyen Android Java Uygulaması

Yorum Ekle
   
Kötü
İyi