Android Kotlin Hakkında Temel Bilgiler 01.2: Temel uygulama anatomisi

Bu codelab, Android Kotlin Hakkında Temel Bilgiler kursunun bir parçasıdır. Bu kurstan en iyi şekilde yararlanmak için codelab'leri sırayla tamamlamanızı öneririz. Kursla ilgili tüm codelab'ler Android Kotlin Hakkında Temel Bilgiler codelab'leri açılış sayfasında listelenir.

Giriş

Şu ana kadar her şeyi ayarladınız ve Android Studio sizin için birçok kod oluşturdu. Tüm bu kodu değiştirmeden önce ne oluşturduğunuzu ve bir Android uygulamasının kaynak dosyalarında nasıl gezineceğinizi bilmeniz önemlidir.

Bu codelab'de, Android uygulamasının ana bileşenleri hakkında daha fazla bilgi edinecek ve bir düğme içeren uygulamaya basit etkileşim özellikleri ekleyeceksiniz.

Bilmeniz gerekenler

  • Android Studio'yu yükleme ve açma
  • Yeni uygulama projesi oluşturma
  • Uygulamayı emülatörde veya fiziksel cihazda çalıştırma

Neler öğreneceksiniz?

  • Uygulamanın düzen dosyasını düzenleme
  • Etkileşimli davranışa sahip bir uygulama oluşturma
  • Birçok yeni terminoloji. Terimlerin ve kavramların kolay anlaşılır açıklamaları için Vocabulary Glossary'ye (Kelime Bilgisi Sözlüğü) göz atın.

Yapacaklarınız

  • MainActivity Kotlin dosyasını ve etkinliğin düzen dosyasını inceleyin.
  • Etkinliğin düzenini XML'de düzenleyin.
  • Etkinliğin düzenine bir Button öğesi ekleyin.
  • Sabit kodlanmış dizeleri dize kaynakları dosyasına ayıklayın.
  • Kullanıcı bir Button simgesine dokunduğunda ekranda mesaj göstermek için tıklama işleyici yöntemleri uygulayın.

Bu codelab'de DiceRoller adlı yeni bir uygulama projesi oluşturacak ve bir düğmeyle temel etkileşim ekleyeceksiniz. Düğme her tıklandığında, gösterilen metnin değeri değişir. Bu codelab'in nihai DiceRoller uygulaması şu şekilde görünür:

Son codelab'de, java ve res dizinleri de dahil olmak üzere bir uygulama projesinin ana bölümleri hakkında bilgi edindiniz. Bu görevde, uygulamanızı oluşturan en önemli iki dosyaya odaklanacaksınız: MainActivityKotlin dosyası ve activity_main.xml düzen dosyası.

1. adım: MainActivity'yi inceleyin

MainActivity, Activity örneğidir. Activity, Android uygulamasının kullanıcı arayüzünü (UI) çizen ve giriş etkinliklerini alan temel bir Android sınıfıdır. Uygulamanız başlatıldığında AndroidManifest.xml dosyasında belirtilen etkinlik başlatılır.

Birçok programlama dili, programı başlatan bir ana yöntem tanımlar. Android uygulamalarında ana yöntem yoktur. Bunun yerine, AndroidManifest.xml dosyası, kullanıcı uygulamanın başlatıcı simgesine dokunduğunda MainActivity uygulamasının başlatılması gerektiğini belirtir. Android OS, bir etkinliği başlatmak için manifest dosyasındaki bilgileri kullanarak uygulamanın ortamını ayarlar ve MainActivity oluşturur. Ardından MainActivity da kurulumu tamamlar.

Her etkinliğin ilişkili bir düzen dosyası vardır. Etkinlik ve düzen, düzen genişletme olarak bilinen bir işlemle bağlanır. Etkinlik başladığında, XML düzen dosyalarında tanımlanan görünümler bellekte Kotlin görünüm nesnelerine dönüştürülür (veya "genişletilir"). Bu işlem gerçekleştiğinde etkinlik, bu nesneleri ekrana çizebilir ve dinamik olarak değiştirebilir.

  1. Yeni bir proje oluşturmak için Android Studio'da File > New > New Project'i (Dosya > Yeni > Yeni Proje) seçin. Boş etkinliği kullanın ve Sonraki'yi tıklayın.
  2. Projeyi DiceRoller olarak adlandırın ve proje adı ile proje konumu için diğer tüm değerleri doğrulayın. "Use AndroidX Artifacts" (AndroidX Yapılarını Kullan) seçeneğinin işaretli olduğundan emin olun. Son'u tıklayın.


  3. Project > Android (Proje > Android) bölmesinde java > com.example.android.diceroller'ı genişletin. MainActivity'yi çift tıklayın. Kod düzenleyicide kod MainActivity içinde gösterilir.


  4. Paket adının ve içe aktarma ifadelerinin altında MainActivity için sınıf bildirimi bulunur. MainActivity sınıfı, AppCompatActivity sınıfını genişletir.
class MainActivity : AppCompatActivity() { ...
  1. onCreate() yöntemine dikkat edin. Etkinlikler, nesneyi başlatmak için oluşturucu kullanmaz. Bunun yerine, etkinlik kurulumunun bir parçası olarak önceden tanımlanmış bir dizi yöntem ("yaşam döngüsü yöntemleri" olarak adlandırılır) çağrılır. Bu yaşam döngüsü yöntemlerinden biri onCreate()'dir. Bu yöntemi kendi uygulamanızda her zaman geçersiz kılarsınız. Yaşam döngüsü yöntemleri hakkında daha fazla bilgiyi sonraki bir codelab'de edineceksiniz.

    onCreate()'de, etkinlikle hangi düzenin ilişkilendirileceğini belirtir ve düzeni genişletirsiniz. setContentView() yöntemi her ikisini de yapar.
override fun onCreate(savedInstanceState: Bundle?) {
   super.onCreate(savedInstanceState)
   setContentView(R.layout.activity_main)
}

setContentView() yöntemi, düzeni R.layout.activity_main kullanarak referans alır. Bu aslında bir tam sayı referansıdır. R sınıfı, uygulamanızı oluşturduğunuzda oluşturulur. R sınıfı, res dizininin içeriği de dahil olmak üzere uygulamanın tüm öğelerini içerir.

Bu durumda, R.layout.activity_main; oluşturulan R sınıfını, layout klasörünü ve activity_main.xml düzen dosyasını ifade eder. (Kaynaklar dosya uzantılarını içermez.) Uygulamanın kaynaklarının (resimler, dizeler ve düzen dosyasındaki öğeler dahil) çoğu için R sınıfında benzer referanslar kullanırsınız.

2. adım: Uygulama düzeni dosyasını inceleyin ve keşfedin

Uygulamanızdaki tüm etkinliklerin, uygulamanın res/layout dizininde ilişkili bir düzen dosyası vardır. Düzen dosyası, bir etkinliğin gerçekte nasıl göründüğünü ifade eden bir XML dosyasıdır. Düzen dosyası, görünümleri ve görünümlerin ekranda görüneceği yeri tanımlayarak bunu yapar.

Görünümler, View sınıfını genişleten metin, resim ve düğme gibi öğelerdir. TextView, Button, ImageView ve CheckBox gibi birçok görünüm türü vardır.

Bu görevde, uygulama düzeni dosyasını inceleyip değiştireceksiniz.

  1. Project > Android (Proje > Android) bölmesinde res > layout'u genişletin ve activity_main.xml'i çift tıklayın. Düzen tasarımı düzenleyicisi açılır. Android Studio, uygulamanızın düzenini görsel olarak oluşturmanıza ve düzen tasarımını önizlemenize olanak tanıyan bu düzenleyiciyi içerir. Tasarım düzenleyici hakkında daha fazla bilgiyi sonraki bir codelab'de edinebilirsiniz.
  2. Düzen dosyasını XML olarak görüntülemek için pencerenin alt kısmındaki Metin sekmesini tıklayın.


  3. Düzen düzenleyicideki mevcut tüm XML kodunu silin. Yeni bir projeyle birlikte aldığınız varsayılan düzen, Android Studio tasarım düzenleyicisiyle çalışıyorsanız iyi bir başlangıç noktasıdır. Bu derste, sıfırdan yeni bir düzen oluşturmak için temel XML ile çalışacaksınız.
  4. Bu kodu kopyalayıp düzene yapıştırın:
<?xml version="1.0" encoding="utf-8"?>

<LinearLayout   
    xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    tools:context=".MainActivity" >

    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="Hello World!" />

</LinearLayout>

Şimdi kodu inceleyin:

  1. Düzenin en üst düzey veya kök öğesi bir <LinearLayout> öğesidir. LinearLayout görünümü ViewGroup. Görünüm grupları, diğer görünümleri barındıran ve görünümlerin ekrandaki konumlarını belirlemeye yardımcı olan kapsayıcılardır.

    Düzeninize eklediğiniz tüm görünümler ve görünüm grupları, en üstteki XML öğesinin bu hiyerarşinin kökü olduğu bir görünüm hiyerarşisinde düzenlenir. Kök görünüm başka görünümler ve görünüm grupları içerebilir. İçerilen görünüm grupları da başka görünümler ve görünüm grupları içerebilir. Uygulamanız çalıştığında, XML düzen dosyanızdaki görünüm hiyerarşisi, düzen genişletildiğinde bir nesne hiyerarşisine dönüşür. Bu durumda, kök görünüm grubu, alt görünümlerini doğrusal olarak, birbiri ardına (dikey veya yatay olarak) düzenleyen doğrusal bir düzendir.

    Yeni bir Android projesi için aldığınız varsayılan kök, tasarım düzenleyiciyle iyi çalışan bir ConstraintLayout'dir. Bu uygulama için, kısıtlama düzeninden daha basit olan bir LinearLayout görünüm grubu kullanıyorsunuz. Görünüm grupları ve kısıtlama düzeni hakkında daha fazla bilgiyi sonraki derste edinebilirsiniz.
  2. LinearLayout etiketinin içindeki android:layout_width özelliğine dikkat edin. Bu LinearLayout öğesinin genişliği match parent olarak ayarlanmıştır. Bu nedenle, öğe üst öğesiyle aynı genişliktedir. Bu, kök görünüm olduğundan düzen, ekranın tam genişliğine genişler.
  3. android:layout_height özelliğinin wrap_content olarak ayarlandığını unutmayın. Bu özellik, LinearLayout yüksekliğinin, içerdiği tüm görünümlerin (şu an için yalnızca TextView) toplam yüksekliğine eşit olmasını sağlar.
  4. <TextView> öğesini inceleyin. Metni görüntüleyen bu TextView, DiceRoller uygulamanızdaki tek görsel öğedir. android:text özelliği, görüntülenecek gerçek dizeyi (bu örnekte "Hello World!" dizesi) tutar.
  5. <TextView> öğesindeki android:layout_width ve android:layout_height özelliklerinin her ikisinin de wrap_content olarak ayarlandığını fark edin. Metin görünümünün içeriği metnin kendisidir. Bu nedenle, görünüm yalnızca metin için gereken alanı kaplar.

Zar atma uygulaması, kullanıcının zar atıp sonucu görmesini sağlayacak bir yöntem olmadan pek kullanışlı olmaz. Başlamak için düzene bir zar atma düğmesi ekleyin ve kullanıcının attığı zar değerini gösteren metni ekleyin.

1. adım: Düzeninize bir düğme ekleyin

  1. <Button yazıp Return tuşuna basarak metin görünümünün altındaki düzene bir Button öğesi ekleyin. Button ile başlayan, /> ile biten ve layout_width ile layout_height özelliklerini içeren bir blok gösterilir.
<Button
   android:layout_width=""
   android:layout_height="" />
  1. Hem layout_width hem de layout_height özelliklerini "wrap_content" olarak ayarlayın. Bu değerlerle düğme, içerdiği metin etiketiyle aynı genişlik ve yüksekliğe sahip olur.
  2. Düğmeye bir android:text özelliği ekleyin ve bu özelliğe "Roll" değerini verin. Düğme öğesi artık şu şekilde görünüyor:
<Button
   android:layout_width="wrap_content"
   android:layout_height="wrap_content"
   android:text="Roll" />


Button görünümlerinde text özelliği, düğmenin etiketidir. Düzen düzenleyicide, özellik sarı renkle vurgulanır. Bu, bir ipucu veya uyarı olduğunu gösterir. Bu durumda, "Roll" dizesi düğme etiketinde sabit kodlandığı için sarı renkte vurgulanmıştır. Ancak dize bir kaynak olmalıdır. Dize kaynakları hakkında bilgiyi sonraki bölümde bulabilirsiniz.

2. adım: Dize kaynaklarını ayıklayın

Dizeleri düzen veya kod dosyalarınıza sabit kodla eklemek yerine, uygulamanızdaki tüm dizeleri ayrı bir dosyaya yerleştirmek en iyi uygulamadır. Bu dosyanın adı strings.xml olup uygulamanın kaynakları arasında, res/values/ dizininde yer alır.

Dizelerin ayrı bir dosyada olması, özellikle bu dizeleri birden fazla kez kullanıyorsanız yönetmenizi kolaylaştırır. Ayrıca, her dil için bir dize kaynak dosyası oluşturmanız gerektiğinden, uygulamanızı çevirmek ve yerelleştirmek için dize kaynakları zorunludur.

Android Studio, ipuçları ve uyarılarla dizelerinizi kaynak dosyasına yerleştirmenizi hatırlatır.

  1. android:text etiketinin <Button> özelliğindeki "Roll" dizesini bir kez tıklayın.
  2. Alt+Enter tuşuna basın (macOS'te Option+Enter) ve pop-up menüden Dize kaynağını ayıkla'yı seçin.
  3. Kaynak adı için roll_label girin.
  4. Tamam'ı tıklayın. res/values/string.xml dosyasında bir dize kaynağı oluşturulur ve düğme öğesindeki dize, bu kaynağa yapılan bir referansla değiştirilir:
    android:text="@string/roll_label"
  5. Project > Android (Proje > Android) bölmesinde res > values'u genişletin ve dize kaynaklarınızı strings.xml dosyasında görmek için strings.xml'i çift tıklayın:
<resources>
   <string name="app_name">DiceRoller</string>
   <string name="roll_label">Roll</string>
</resources>

3. adım: Görünümlere stil uygulayın ve görünümleri konumlandırın

Düzeniniz artık bir TextView ve bir Button görünümü içeriyor. Bu görevde, görünüm grubundaki görünümleri daha çekici görünecek şekilde düzenleyeceksiniz.

  1. Düzenin önizlemesini görmek için Tasarım sekmesini tıklayın. Şu anda her iki görünüm de yan yana ve ekranın üst kısmına yakın bir yerde gösteriliyor.


  2. XML düzenleyiciye dönmek için Metin sekmesini tıklayın. android:orientation özelliğini LinearLayout etiketine ekleyin ve "vertical" değerini verin. <LinearLayout> öğesi artık şu şekilde görünmelidir:
<LinearLayout
   xmlns:android="http://schemas.android.com/apk/res/android"
   android:layout_width="match_parent"
   android:layout_height="wrap_content"
   android:orientation="vertical"
   tools:context=".MainActivity">

LinearLayout görünüm grubu, içerdiği görünümleri bir satırda yan yana (yatay olarak) veya üst üste (dikey olarak) yerleştirir. Varsayılan yön yataydır. TextView simgesinin Button simgesinin üzerinde yer almasını istediğiniz için yönü dikey olarak ayarlarsınız. Tasarım artık aşağıdaki gibi görünüyor. Metnin altında düğme var:

  1. android:layout_gravity özelliğini hem TextView hem de Button öğesine ekleyin ve "center_horizontal" değerini verin. Bu işlem, her iki görünümü de yatay eksenin ortasına göre hizalar. TextView ve Button öğeleri artık aşağıdaki gibi görünmelidir:
<TextView   
   android:layout_width="wrap_content"
   android:layout_height="wrap_content"
   android:layout_gravity="center_horizontal"
   android:text="Hello World!" />

<Button
   android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_gravity="center_horizontal"
    android:text="@string/roll_label" />
  1. Doğrusal düzene android:layout_gravity özelliğini ekleyin ve "center_vertical" değerini verin. LinearLayout öğeniz artık aşağıdaki gibi görünmelidir:
<LinearLayout
   xmlns:android="http://schemas.android.com/apk/res/android"
   xmlns:tools="http://schemas.android.com/tools"
   android:layout_width="match_parent"
   android:layout_height="wrap_content"
   android:orientation="vertical"
   android:layout_gravity="center_vertical"
   tools:context=".MainActivity">
  1. Metin görünümündeki metnin boyutunu artırmak için android:textSize özelliğini <TextView> öğesine "30sp" değeriyle birlikte ekleyin. sp kısaltması, ölçeklendirilebilir piksel anlamına gelir. Bu, metni cihazın ekran kalitesinden bağımsız olarak boyutlandırmak için kullanılan bir ölçüdür. TextView öğesi artık şu şekilde görünmelidir:
<TextView   
   android:layout_width="wrap_content"
   android:layout_height="wrap_content"
   android:layout_gravity="center_horizontal"
   android:textSize="30sp"
   android:text="Hello World!" />
  1. Uygulamanızı derleyip çalıştırın.


Artık hem metin hem de düğme düzgün bir şekilde yerleştirilmiş durumda ve metin görünümünde daha büyük bir metin var. Düğme henüz herhangi bir işlev içermediğinden tıklandığında hiçbir şey olmaz. Ardından bu konu üzerinde çalışırsınız.

4. adım: Kodda düğmeye referans alın

MainActivity içindeki Kotlin kodu, uygulamanızın etkileşimli bölümlerini (ör. bir düğmeye dokunduğunuzda ne olacağı) tanımlamaktan sorumludur. Düğme tıklandığında yürütülecek bir işlev yazmak için MainActivity'deki genişletilmiş düzeninizde Button nesnesine referans almanız gerekir. Düğmeye referans almak için:

  • XML dosyasında Button öğesine bir kimlik atayın.
  • Belirli bir kimliğe sahip View öğesine referans almak için kodunuzda findViewById() yöntemini kullanın.

Button görünümüne referansınız olduğunda, uygulama çalışırken görünümü dinamik olarak değiştirmek için bu görünümde yöntemler çağırabilirsiniz. Örneğin, düğmeye dokunulduğunda kodu yürüten bir tıklama işleyici ekleyebilirsiniz.

  1. Henüz açık değilse activity_main.xml düzen dosyasını açın ve Metin sekmesini tıklayın.
  2. Düğmeye android:id özelliğini ekleyin ve düğmeye bir ad verin (bu örnekte "@+id/roll_button"). <Button> öğeniz artık şu şekilde görünüyor:
<Button
   android:id="@+id/roll_button"
   android:layout_width="wrap_content"
   android:layout_height="wrap_content"
   android:layout_gravity="center_horizontal"
   android:text="@string/roll_label" />

XML düzen dosyasında bir görünüm için kimlik oluşturduğunuzda Android Studio, oluşturulan R sınıfında bu kimliğin adıyla bir tam sayı sabiti oluşturur. Bu nedenle, bir görünüme roll_button adını verirseniz Android Studio, R sınıfında roll_button adlı bir tam sayı sabiti oluşturur. Kimlik adının "@+id" ön eki, derleyiciye bu kimlik sabitini R sınıfına eklemesini söyler. XML dosyanızdaki tüm görünüm kimlikleri bu öneke sahip olmalıdır.

  1. MainActivity Kotlin dosyasını açın. onCreate() içinde, setContentView()'den sonra şu satırı ekleyin:
val rollButton: Button = findViewById(R.id.roll_button)

XML sınıfında tanımladığınız görünüm için View referansı almak üzere findViewById() yöntemini kullanın. Bu durumda, R sınıfından Button referansını ve roll_button kimliğini alıp bu referansı rollButton değişkenine atarsınız.

  1. Android Studio'nun, çözümlenmemiş bir referans olduğunu ve kullanabilmek için bu sınıfı içe aktarmanız gerektiğini belirtmek üzere Button sınıfını kırmızı renkte vurguladığını ve altını çizdiğini unutmayın. Tam nitelikli sınıf adını belirten bir ipucu da görünebilir:


  2. Tam nitelikli sınıf adını kabul etmek için Alt+Enter (Mac'te Option+Enter) tuşuna basın.

5. adım: Bir kısa mesaj göstermek için tıklama işleyici ekleyin

Tıklama işleyici, kullanıcı tıklanabilir bir kullanıcı arayüzü öğesini (ör. düğme) her tıkladığında veya dokunduğunda çağrılan bir yöntemdir. Tıklama işleyici oluşturmak için gerekenler:

  • Bir işlemi gerçekleştiren yöntem.
  • setOnClickHandler() yöntemi, Button öğesini işleyici yöntemine bağlar.

Bu görevde, Toast simgesini göstermek için bir tıklama işleyici yöntemi oluşturursunuz. (Bildirim, ekranda kısa süreliğine gösterilen bir mesajdır.) Tıklama işleyici yöntemini Button öğesine bağlarsınız.

  1. MainActivity sınıfınızda onCreate() sonrasında rollDice() adlı özel bir işlev oluşturun.
private fun rollDice() {
  
}
  1. rollDice() yöntemi çağrıldığında Toast göstermek için bu satırı rollDice() yöntemine ekleyin:
Toast.makeText(this, "button clicked", 
   Toast.LENGTH_SHORT).show()

Bildirim oluşturmak için Toast.makeText() yöntemini çağırın. Bu yöntem için üç şey gerekir:

  • Context nesnesi. Context nesnesi, Android OS'in mevcut durumu hakkında iletişim kurmanıza ve bilgi almanıza olanak tanır. Toast nesnesinin işletim sistemine kısa mesajı göstermesini söyleyebilmesi için buraya bir Context eklemeniz gerekir. AppCompatActivity, Context öğesinin bir alt sınıfı olduğundan bağlam için yalnızca this anahtar kelimesini kullanabilirsiniz.
  • Gösterilecek mesaj, burada "button clicked".
  • Mesajın gösterileceği süre. En sondaki show() yöntemi, kısa mesajı gösterir.
  1. onCreate() içinde, findViewById() çağrısından sonra rollDice() öğesini rollButton nesnesine tıklama işleyicisi olarak atamak için şu satırı ekleyin:
rollButton.setOnClickListener { rollDice() }

MainActivity sınıfınızın tam tanımı artık şu şekilde görünüyor:

class MainActivity : AppCompatActivity() {

    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_main)

        val rollButton: Button = findViewById(R.id.roll_button)
        rollButton.setOnClickListener { rollDice() }
    }

    private fun rollDice() {
        Toast.makeText(this, "button clicked",
            Toast.LENGTH_SHORT).show()
    }
}
  1. Uygulamanızı derleyip çalıştırın. Düğmeye her dokunduğunuzda bir kısa mesaj görünmelidir.

Bu görevde, rollDice() yöntemini değiştirerek TextView içindeki metni değiştireceksiniz. İlk adımda, bu metni "Hello World!" dizesinden "Dice Rolled!" dizesine değiştirirsiniz. İkinci adımda, bir ile altı arasında rastgele bir sayı gösteriyorsunuz.

1. adım: Bir dize görüntüleyin

  1. activity_main.xml uygulamasını açın ve TextView'ye kimlik ekleyin.
android:id="@+id/result_text"
  1. MainActivity adlı kişiyi aç. rollDice() yönteminde, Toast öğesini görüntülemek için satırın başına yorum işareti koyun.
  2. findViewById() yöntemini kullanarak kimliğine göre TextView öğesine referans alın. Başvuruyu bir resultText değişkenine atayın.
val resultText: TextView = findViewById(R.id.result_text)
  1. Gösterilen metni değiştirmek için resultText.text özelliğine yeni bir dize atayın. Bu dizeyi bir kaynağa ayıklama ipucunu yoksayabilirsiniz. Bu yalnızca geçici bir dizedir.
resultText.text = "Dice Rolled!"
  1. Uygulamayı derleyip çalıştırın. Roll (Dağıt) düğmesine dokunmanın artık TextView değerini güncellediğini unutmayın.

2. adım: Rastgele bir sayı görüntüleyin

Son olarak, bu görevde zar atma işlemini simüle etmek için düğme tıklamasına rastgelelik ekleyeceksiniz. Düğme her tıklandığında veya dokunulduğunda kodunuz 1 ile 6 arasında rastgele bir sayı seçer ve TextView değerini günceller. Rastgele sayı oluşturma görevi Android'e özgü değildir ve bu işlemi yapmak için Random sınıfını kullanırsınız.

  1. rollDice() yönteminin en üstünde, 1 ile 6 arasında rastgele bir sayı elde etmek için Random.nextInt() yöntemini kullanın:
val randomInt = Random().nextInt(6) + 1
  1. text özelliğini, rastgele tam sayının değeri olarak dize şeklinde ayarlayın:
resultText.text = randomInt.toString()
  1. Uygulamayı derleyip çalıştırın. Roll (Rulo) düğmesine her dokunduğunuzda metin görünümündeki sayı değişir.

Android Studio projesi: DiceRoller

Zorluk: Uygulamaya, Roll düğmesinin hemen altında görünen ve "Count Up" (Yukarı Say) etiketli ikinci bir düğme ekleyin. Count Up (Yukarı Say) düğmesine dokunulduğunda sonuç metni görünümünün geçerli değeri alınmalı, bu değere 1 eklenmeli ve metin görünümü güncellenmelidir. Aşağıdaki uç durumları ele aldığınızdan emin olun:

  • Sonuç metin görünümünde henüz bir sayı yoksa (yani metin görünümünde hâlâ varsayılan "Hello World" dizesi varsa) sonuç metnini 1 olarak ayarlayın.
  • Sayı zaten 6 ise herhangi bir işlem yapmayın.

Kodlama yarışması çözüm kodu

Android Studio projesi: DiceRoller-challenge

Etkinlikler

  • MainActivity, AppCompatActivity sınıfının alt sınıfıdır. AppCompatActivity ise Activity sınıfının alt sınıfıdır. Activity, Android uygulaması kullanıcı arayüzünü çizmekten ve giriş etkinliklerini almaktan sorumlu temel bir Android sınıfıdır.
  • Tüm etkinliklerin, uygulamanın kaynaklarındaki bir XML dosyası olan ilişkili bir düzen dosyası vardır. Düzen dosyası, etkinliğe göre adlandırılır (ör. activity_main.xml).
  • MainActivity içindeki setContentView() yöntemi, düzeni etkinlikle ilişkilendirir ve etkinlik oluşturulduğunda bu düzeni genişletir.
  • Düzen şişirme, XML düzen dosyalarında tanımlanan görünümlerin bellekte Kotlin görünüm nesnelerine dönüştürüldüğü (veya "şişirildiği") bir işlemdir. Düzen şişirildikten sonra Activity bu nesneleri ekrana çizebilir ve dinamik olarak değiştirebilir.

Görünümler

  • Uygulama düzenindeki tüm kullanıcı arayüzü öğeleri, View sınıfının alt sınıflarıdır ve görünümler olarak adlandırılır. TextView ve Button, görünümlere örnek olarak verilebilir.
  • View öğeleri ViewGroup içinde gruplandırılabilir. Görünüm grubu, içindeki görünümler veya diğer görünüm grupları için kapsayıcı görevi görür. LinearLayout, görünümlerini doğrusal olarak düzenleyen bir görünüm grubu örneğidir.

Özellikleri görüntüleme

  • android:layout_width ve android:layout_height özellikleri, bir görünümün ağırlığını ve yüksekliğini belirtir. match_parent değeri, görünümü üst öğesinin genişliğine veya yüksekliğine göre uzatır. wrap_content değeri, görünümü içeriğine uyacak şekilde küçültür.
  • android:text özelliği, bir görünümün göstermesi gereken metni (görünüm metin gösteriyorsa) belirtir. Düğmeler için android:text, düğme etiketidir.
  • LinearLayout görünüm grubundaki android:orientation özelliği, içerdiği görünüm öğelerini düzenler. horizontal değeri, görünümleri soldan sağa doğru düzenler. vertical değeri, görünümleri yukarıdan aşağıya doğru düzenler.
  • android:layout_gravity özelliği, bir görünümün ve bu görünümün tüm alt öğelerinin yerleşimini belirler.
  • android:textSize özelliği, metin görünümündeki metnin boyutunu tanımlar. Metin boyutları sp birimleriyle (ölçeklenebilir pikseller) belirtilir. sp birimlerini kullanarak metni cihazın ekran kalitesinden bağımsız olarak boyutlandırabilirsiniz.

Strings

  • Dizeleri düzende sabit kodlamak yerine dize kaynaklarını kullanmak en iyi uygulamadır.
  • Dize kaynakları values/res/string.xml dosyasında bulunur.
  • Dizeleri ayıklamak için Alt+Enter (Mac'te Option+Enter) tuşunu kullanın. Pop-up menüden Dize kaynaklarını ayıkla'yı seçin.

Görünümleri kullanma

  • Kotlin kodunuzu düzende tanımladığınız bir görünüme bağlamak için görünüm şişirildikten sonra görünüm nesnesine bir referans almanız gerekir. Düzendeki görünüme bir kimlik (android:id) atayın, ardından ilişkili görünüm nesnesini almak için findViewById() yöntemini kullanın.
  • XML düzen dosyasında bir görünüm için kimlik oluşturduğunuzda Android Studio, oluşturulan R sınıfında bu kimliğin adıyla bir tam sayı sabiti oluşturur. Daha sonra bu R.id referansını findViewById() yönteminde kullanabilirsiniz.
  • Görünüm nesnesinin özelliklerini doğrudan Kotlin kodunuzda özellik adına göre ayarlayabilirsiniz. Örneğin, bir metin görünümündeki metin, XML'deki android:text özelliğiyle, Kotlin'de ise text özelliğiyle tanımlanır.
  • Tıklama işleyicisi, kullanıcı bir kullanıcı arayüzü öğesini tıkladığında veya öğeye dokunduğunda çağrılan bir yöntemdir. Bir görünüm (ör. düğme) için tıklama işleyici yöntemi eklemek üzere setOnClickListener() yöntemini kullanın.

Bildirim mesajlarını kullanma

Durum mesajı, kullanıcıya küçük bir pop-up pencerede basit bir mesaj gösteren bir görünümdür.

Bir toast oluşturmak için makeText() fabrika yöntemini üç bağımsız değişkenle Toast sınıfında çağırın:

Kısa iletiyi göstermek için show() işlevini çağırın.

Udacity kursu:

Android geliştirici belgeleri:

Diğer:

Bu bölümde, bir eğitmenin yönettiği kurs kapsamında bu codelab'i tamamlayan öğrenciler için olası ödevler listelenmektedir. Eğitmen, aşağıdakileri yapmalıdır:

  • Gerekirse ödev atayın.
  • Öğrencilere ev ödevi ödevlerini nasıl göndereceklerini bildirin.
  • Ödevlere not verin.

Eğitmenler bu önerileri istedikleri kadar kullanabilir ve uygun olduğunu düşündükleri diğer ödevleri verebilirler.

Bu codelab'i kendi başınıza tamamlıyorsanız bilginizi test etmek için bu ödevleri kullanabilirsiniz.

Uygulamaları değiştirme

DiceRoller uygulamasını açın. Uygulamaya, Roll düğmesinin hemen altında görünen "Reset" (Sıfırla) etiketli bir düğme ekleyin. Bu düğmeyle sonuç metni görünümünü 0'a sıfırlayın.

Bu soruları yanıtlayın

1. Soru

Hangi yöntem, Activity uygulamasının düzenini genişletir ve görünümlerini nesne olarak kullanılabilir hale getirir?

  • onCreate()
  • setClickListener()
  • setContentView()
  • show()

2. Soru

Bir görünümün genişliğini, içeriğe uyacak şekilde ayarlamak için hangi görünüm özelliğini kullanırsınız?

  • android:view_width="wrap"
  • android:layout_width="wrap_content"
  • android:layout_height="wrap_content"
  • android:layout_width="match_parent"

Uygulamanızı notlandırmaya gönderme

Uygulamada aşağıdakilerin bulunduğundan emin olun:

  • Uygulama düzeninde bir metin görünümü ve iki düğme bulunmalıdır.
  • Uygulamanın kodu, her düğme için bir tane olmak üzere iki tıklama işleyici ayarlamalıdır.
  • Metin görünümünü sıfırlayan tıklama işleyicisi, metin özelliğini 0 olarak ayarlamalıdır.

Sonraki derse başlayın: 1.3 Görüntü kaynakları ve uyumluluk

Bu kurstaki diğer codelab'lerin bağlantılarını Android Kotlin Hakkında Temel Bilgiler codelab'leri açılış sayfasında bulabilirsiniz.