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: MainActivity
Kotlin 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.
- 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.
- 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.
- 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. - 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() { ...
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 birionCreate()
'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.
- 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.
- Düzen dosyasını XML olarak görüntülemek için pencerenin alt kısmındaki Metin sekmesini tıklayın.
- 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.
- 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:
- 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 birConstraintLayout
'dir. Bu uygulama için, kısıtlama düzeninden daha basit olan birLinearLayout
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. LinearLayout
etiketinin içindekiandroid:layout_width
özelliğine dikkat edin. BuLinearLayout
öğesinin genişliğimatch 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.android:layout_height
özelliğininwrap_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ızcaTextView
) toplam yüksekliğine eşit olmasını sağlar.<TextView>
öğesini inceleyin. Metni görüntüleyen buTextView
, DiceRoller uygulamanızdaki tek görsel öğedir.android:text
özelliği, görüntülenecek gerçek dizeyi (bu örnekte"Hello World!"
dizesi) tutar.<TextView>
öğesindekiandroid:layout_width
veandroid:layout_height
özelliklerinin her ikisinin dewrap_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
- <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 velayout_width
ilelayout_height
özelliklerini içeren bir blok gösterilir.
<Button
android:layout_width=""
android:layout_height="" />
- Hem
layout_width
hem delayout_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. - 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.
android:text
etiketinin<Button>
özelliğindeki "Roll" dizesini bir kez tıklayın.Alt+Enter
tuşuna basın (macOS'teOption+Enter
) ve pop-up menüden Dize kaynağını ayıkla'yı seçin.- Kaynak adı için
roll_label
girin. - 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"
- 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.
- 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.
- XML düzenleyiciye dönmek için Metin sekmesini tıklayın.
android:orientation
özelliğiniLinearLayout
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:
android:layout_gravity
özelliğini hemTextView
hem deButton
öğ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" />
- 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">
- 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!" />
- 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 kodunuzdafindViewById()
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.
- Henüz açık değilse
activity_main.xml
düzen dosyasını açın ve Metin sekmesini tıklayın. - 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.
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.
- 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: - Tam nitelikli sınıf adını kabul etmek için
Alt+Enter
(Mac'teOption+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.
MainActivity
sınıfınızdaonCreate()
sonrasındarollDice()
adlı özel bir işlev oluşturun.
private fun rollDice() {
}
rollDice()
yöntemi çağrıldığındaToast
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 birContext
eklemeniz gerekir.AppCompatActivity
,Context
öğesinin bir alt sınıfı olduğundan bağlam için yalnızcathis
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.
onCreate()
içinde,findViewById()
çağrısından sonrarollDice()
öğesinirollButton
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()
}
}
- 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
activity_main.xml
uygulamasını açın veTextView
'ye kimlik ekleyin.
android:id="@+id/result_text"
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.findViewById()
yöntemini kullanarak kimliğine göreTextView
öğesine referans alın. Başvuruyu birresultText
değişkenine atayın.
val resultText: TextView = findViewById(R.id.result_text)
- 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!"
- 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.
rollDice()
yönteminin en üstünde, 1 ile 6 arasında rastgele bir sayı elde etmek içinRandom.nextInt()
yöntemini kullanın:
val randomInt = Random().nextInt(6) + 1
text
özelliğini, rastgele tam sayının değeri olarak dize şeklinde ayarlayın:
resultText.text = randomInt.toString()
- 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
iseActivity
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çindekisetContentView()
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
veButton
, görünümlere örnek olarak verilebilir. View
öğeleriViewGroup
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
veandroid: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çinandroid:text
, düğme etiketidir.LinearLayout
görünüm grubundakiandroid: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'teOption+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çinfindViewById()
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 buR.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 isetext
ö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:
- Uygulamanın bağlamı
Activity
- Gösterilecek mesaj (ör. dize kaynağı)
- Bir süre (ör.
Toast.LENGTH_SHORT
)
Kısa iletiyi göstermek için show()
işlevini çağırın.
Udacity kursu:
Android geliştirici belgeleri:
- Android Studio ile tanışın
- Düzenler
View
Button
TextView
- Uygulama kaynaklarına genel bakış
- Giriş etkinliklerine genel bakış
findViewById()
setOnClickListener()
Context
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:
Bu kurstaki diğer codelab'lerin bağlantılarını Android Kotlin Hakkında Temel Bilgiler codelab'leri açılış sayfasında bulabilirsiniz.