Mobil uygulamalar günümüz dünyasının vazgeçilmez bir parçası haline geldi. Android, geniş kullanıcı kitlesiyle bu alanda en popüler platformlardan biri. Peki, bu platformda nasıl uygulama geliştirilir? Cevap: Kotlin ve Android Studio!
Bu kapsamlı rehberde, Kotlin programlama dili ve Android Studio kullanarak temel bir Android uygulamasını sıfırdan nasıl geliştireceğinizi adım adım öğreneceksiniz. Amacımız, Android uygulama geliştirmenin temel prensiplerini anlamanızı ve kendi projeleriniz için sağlam bir temel oluşturmanızı sağlamaktır.
1. Geliştirme Ortamı Kurulumu
Android uygulaması geliştirmeye başlamadan önce doğru bir geliştirme ortamına ihtiyacınız var. Bunun için Google'ın resmi IDE'si olan Android Studio'yu kullanacağız.
Adım 1: Android Studio İndirme ve Kurulumu
Android Studio'yu resmi web sitesinden indirebilirsiniz: https://developer.android.com/studio
Kurulum sihirbazını takip ederek kurulumu tamamlayın. Bu süreçte Android SDK (Software Development Kit) ve gerekli diğer bileşenler de kurulacaktır.
Adım 2: SDK Bileşenlerinin Kontrolü
Android Studio'yu açtıktan sonra, `Tools > SDK Manager` yolunu izleyerek gerekli Android SDK platformlarının (örneğin, en son stabil sürüm) ve SDK Tools'un yüklü olduğundan emin olun.
İpucu: Genellikle, Android Studio ilk kurulumda sizin için gerekli olanları otomatik olarak yükler, ancak kontrol etmek her zaman iyidir.
2. İlk Projemizi Oluşturma
Android Studio açılış ekranında `New Project` seçeneğini tıklayın.
`Phone and Tablet` sekmesi altında `Empty Activity` şablonunu seçin ve `Next` düğmesine basın.
Proje Detayları:
3. Proje Yapısı ve Temel Bileşenler
Yeni bir Android projesi birçok dosya ve klasör içerir. Başlangıçta odaklanacağımız ana dosyalar şunlardır:
4. Kullanıcı Arayüzü Tasarımı (XML Layout)
`activity_main.xml` dosyasını açtığınızda, genellikle bir `ConstraintLayout` içinde varsayılan bir `TextView` göreceksiniz.
Yukarıdaki XML kodunda, bir `TextView`, bir `EditText` ve bir `Button` tanımladık. Bu bileşenlerin ekrandaki konumlarını `ConstraintLayout` ile belirledik. Her bileşenin benzersiz bir `android:id` değeri olması, Kotlin kodunda onlara erişmemizi sağlar.
Not: Metinleri direkt olarak XML içinde yazmak yerine `strings.xml` dosyasından `@string/` kullanarak çekmek iyi bir pratiktir.
5. Kotlin Kodu ile Etkileşim (MainActivity.kt)
Şimdi, XML'de tasarladığımız arayüz bileşenleriyle Kotlin kodumuzda nasıl etkileşim kuracağımıza bakalım. `MainActivity.kt` dosyasını açın.
Bir `Activity` sınıfı, uygulamanızın kullanıcı arayüzünü barındıran tek bir ekranı temsil eder. Uygulamanızdaki her ekran genellikle kendi `Activity`'sine sahiptir.
`onCreate` metodu, Activity yaşam döngüsündeki ilk metodtur ve Activity oluşturulduğunda çağrılır. Burası genellikle layout'u ayarladığımız ve View bileşenlerine referans aldığımız yerdir.
Kotlin kodu örneği (MainActivity.kt):
Yukarıdaki kodda şunları yaptık:
6. Uygulamayı Çalıştırma
Android Studio araç çubuğundaki yeşil üçgen "Run" düğmesine tıklayın.
Bir emülatör seçebilir veya fiziksel bir Android cihazınızı USB hata ayıklama modu açıkken bağlayarak uygulamayı çalıştırabilirsiniz.
Uygulamanız emülatörde veya cihazınızda açılacak ve yazdığınız arayüz ve etkileşim karşınıza gelecektir.
7. Android Yaşam Döngüsü (Lifecycle)
Her Android bileşeninin, özellikle `Activity`'lerin bir yaşam döngüsü vardır. Bu yaşam döngüsü, uygulamanızın durumunu ve kaynakları nasıl yönettiğini anlamak için çok önemlidir.
8. İyi Uygulama Pratikleri ve Sonraki Adımlar
Bu rehber, Android uygulama geliştirmenin kapılarını aralayan temel bilgileri içeriyor. Yolculuğunuzun bu ilk adımında attığınız her başarılı adım, daha karmaşık ve heyecan verici projeler geliştirmeniz için size ilham verecektir. Öğrenmeye ve denemeye devam edin!
Bu kapsamlı rehberde, Kotlin programlama dili ve Android Studio kullanarak temel bir Android uygulamasını sıfırdan nasıl geliştireceğinizi adım adım öğreneceksiniz. Amacımız, Android uygulama geliştirmenin temel prensiplerini anlamanızı ve kendi projeleriniz için sağlam bir temel oluşturmanızı sağlamaktır.
1. Geliştirme Ortamı Kurulumu
Android uygulaması geliştirmeye başlamadan önce doğru bir geliştirme ortamına ihtiyacınız var. Bunun için Google'ın resmi IDE'si olan Android Studio'yu kullanacağız.
Adım 1: Android Studio İndirme ve Kurulumu
Android Studio'yu resmi web sitesinden indirebilirsiniz: https://developer.android.com/studio
Kurulum sihirbazını takip ederek kurulumu tamamlayın. Bu süreçte Android SDK (Software Development Kit) ve gerekli diğer bileşenler de kurulacaktır.
Adım 2: SDK Bileşenlerinin Kontrolü
Android Studio'yu açtıktan sonra, `Tools > SDK Manager` yolunu izleyerek gerekli Android SDK platformlarının (örneğin, en son stabil sürüm) ve SDK Tools'un yüklü olduğundan emin olun.
İpucu: Genellikle, Android Studio ilk kurulumda sizin için gerekli olanları otomatik olarak yükler, ancak kontrol etmek her zaman iyidir.
2. İlk Projemizi Oluşturma
Android Studio açılış ekranında `New Project` seçeneğini tıklayın.
`Phone and Tablet` sekmesi altında `Empty Activity` şablonunu seçin ve `Next` düğmesine basın.
Proje Detayları:
- `Name`: Uygulamanızın adı (örneğin: `IlkAndroidUygulamam`)
- `Package name`: Benzersiz bir tanımlayıcı (örneğin: `com.example.ilkandroiduygulamam`)
- `Save location`: Projenizin kaydedileceği yol.
- `Language`: Kotlin
- `Minimum SDK`: Uygulamanızın çalışmasını istediğiniz en düşük Android sürümü (genellikle varsayılan değer uygundur).
3. Proje Yapısı ve Temel Bileşenler
Yeni bir Android projesi birçok dosya ve klasör içerir. Başlangıçta odaklanacağımız ana dosyalar şunlardır:
- `app/src/main/java/com/example/ilkandroiduygulamam/MainActivity.kt`: Uygulamanızın ana mantığını içeren Kotlin kodu.
- `app/src/main/res/layout/activity_main.xml`: Uygulamanızın kullanıcı arayüzünü (UI) tanımlayan XML dosyası.
- `app/src/main/res/values/strings.xml`: Uygulamadaki metinleri içeren dosya (dil desteği için önemlidir).
- `app/src/main/AndroidManifest.xml`: Uygulamanızın temel özelliklerini, izinlerini ve bileşenlerini tanımlayan dosya.
4. Kullanıcı Arayüzü Tasarımı (XML Layout)
`activity_main.xml` dosyasını açtığınızda, genellikle bir `ConstraintLayout` içinde varsayılan bir `TextView` göreceksiniz.
- TextView: Ekranda metin göstermek için kullanılır.
- Button: Kullanıcı etkileşimi için tıklanabilir düğmeler oluşturur.
- EditText: Kullanıcılardan metin girişi almak için kullanılır.
Kod:
<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/textViewMerhaba"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/merhaba_dunya"
android:textSize="24sp"
app:layout_constraintBottom_toTopOf="@+id/editTextGiris"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent"
app:layout_constraintVertical_chainStyle="packed" />
<EditText
android:id="@+id/editTextGiris"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:hint="@string/adiniz_nedir"
android:padding="16dp"
android:layout_marginTop="16dp"
app:layout_constraintBottom_toTopOf="@+id/buttonGoster"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@+id/textViewMerhaba"
android:layout_marginHorizontal="24dp"
android:inputType="textPersonName"
android:autofillHints="name" />
<Button
android:id="@+id/buttonGoster"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/goster_butonu_metni"
android:layout_marginTop="16dp"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@+id/editTextGiris" />
</androidx.constraintlayout.widget.ConstraintLayout>
Not: Metinleri direkt olarak XML içinde yazmak yerine `strings.xml` dosyasından `@string/` kullanarak çekmek iyi bir pratiktir.
Kod:
<!-- app/src/main/res/values/strings.xml -->
<resources>
<string name="app_name">IlkAndroidUygulamam</string>
<string name="merhaba_dunya">Merhaba, Android Dünyası!</string>
<string name="adiniz_nedir">Adınız nedir?</string>
<string name="goster_butonu_metni">Göster</string>
<string name="hos_geldin_mesaji">Hoş geldin, %s!</string>
</resources>
5. Kotlin Kodu ile Etkileşim (MainActivity.kt)
Şimdi, XML'de tasarladığımız arayüz bileşenleriyle Kotlin kodumuzda nasıl etkileşim kuracağımıza bakalım. `MainActivity.kt` dosyasını açın.
Bir `Activity` sınıfı, uygulamanızın kullanıcı arayüzünü barındıran tek bir ekranı temsil eder. Uygulamanızdaki her ekran genellikle kendi `Activity`'sine sahiptir.
`onCreate` metodu, Activity yaşam döngüsündeki ilk metodtur ve Activity oluşturulduğunda çağrılır. Burası genellikle layout'u ayarladığımız ve View bileşenlerine referans aldığımız yerdir.
Kotlin kodu örneği (MainActivity.kt):
Kod:
package com.example.ilkandroiduygulamam
import androidx.appcompat.app.AppCompatActivity
import android.os.Bundle
import android.widget.Button
import android.widget.EditText
import android.widget.TextView
import android.widget.Toast // Toast mesajları için
class MainActivity : AppCompatActivity() { // AppCompatActivity'den miras alır
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main) // layout dosyasını ayarlar
// UI bileşenlerine referans alma
val textViewMerhaba: TextView = findViewById(R.id.textViewMerhaba)
val editTextGiris: EditText = findViewById(R.id.editTextGiris)
val buttonGoster: Button = findViewById(R.id.buttonGoster)
// Butona tıklama olayını dinleme
buttonGoster.setOnClickListener {
val isim = editTextGiris.text.toString() // EditText'ten metni alma
if (isim.isNotBlank()) { // Eğer isim boş değilse
// TextView'i güncelleme
val hosGeldinMesaji = getString(R.string.hos_geldin_mesaji, isim)
textViewMerhaba.text = hosGeldinMesaji
// Bir Toast mesajı gösterme
Toast.makeText(this, "Hoş Geldin, $isim!", Toast.LENGTH_SHORT).show()
} else {
// Kullanıcıya bir uyarı gösterme
Toast.makeText(this, "Lütfen adınızı girin!", Toast.LENGTH_SHORT).show()
}
}
}
}
- `findViewById(R.id.elementID)` metodunu kullanarak XML dosyasındaki `TextView`, `EditText` ve `Button` bileşenlerine referanslar aldık.
- `setOnClickListener` kullanarak düğmeye tıklandığında ne olacağını belirledik.
- `editTextGiris.text.toString()` ile `EditText`'ten kullanıcının girdiği metni aldık.
- `textViewMerhaba.text = ...` ile `TextView`'in metnini güncelledik.
- `Toast.makeText(...)` ile kısa süreli bir pop-up mesajı (Toast) gösterdik.
- `getString(R.string.hos_geldin_mesaji, isim)` ile `strings.xml` dosyasından parametreli bir metin çektik.
6. Uygulamayı Çalıştırma
Android Studio araç çubuğundaki yeşil üçgen "Run" düğmesine tıklayın.
Bir emülatör seçebilir veya fiziksel bir Android cihazınızı USB hata ayıklama modu açıkken bağlayarak uygulamayı çalıştırabilirsiniz.
Uygulamanız emülatörde veya cihazınızda açılacak ve yazdığınız arayüz ve etkileşim karşınıza gelecektir.
7. Android Yaşam Döngüsü (Lifecycle)
Her Android bileşeninin, özellikle `Activity`'lerin bir yaşam döngüsü vardır. Bu yaşam döngüsü, uygulamanızın durumunu ve kaynakları nasıl yönettiğini anlamak için çok önemlidir.
- `onCreate()`: Activity ilk oluşturulduğunda çağrılır. UI'ı başlatmak ve ilk verileri yüklemek için idealdir.
- `onStart()`: Activity kullanıcıya görünür olduğunda çağrılır.
- `onResume()`: Activity kullanıcıyla etkileşim kurmaya hazır olduğunda çağrılır (ön planda).
- `onPause()`: Activity kısmen gizlendiğinde veya başka bir Activity onun üzerine geldiğinde çağrılır.
- `onStop()`: Activity artık kullanıcıya görünür olmadığında çağrılır.
- `onDestroy()`: Activity yok edilmeden önce çağrılır. Tüm kaynakları serbest bırakmak için kullanılır.
Daha fazla bilgi için: https://developer.android.com/guide/components/activities/activity-lifecycleAndroid resmi dokümantasyonu Activity yaşam döngüsünü şöyle açıklar: "Activity'ler, bir uygulamanın kullanıcı arayüzünün tek bir, odaklanmış bir eylemini temsil eden uygulama bileşenleridir."
8. İyi Uygulama Pratikleri ve Sonraki Adımlar
- Kaynakları Kullanma: Metinleri `strings.xml`, renkleri `colors.xml`, boyutları `dimens.xml` içinde tanımlayın. Bu, uygulamanızın sürdürülebilirliğini ve uluslararasılaşmasını kolaylaştırır.
- ConstraintLayout Kullanımı: Modern Android UI geliştirmede en esnek ve performanslı layout yöneticilerinden biridir.
- Mimari Desenler: Uygulamanız büyüdükçe MVVM (Model-View-ViewModel) gibi mimari desenleri öğrenmek, kodunuzu daha düzenli ve test edilebilir hale getirecektir.
- Resmi Dokümantasyonu Takip Etme: Google'ın Android geliştirici web sitesi (https://developer.android.com/) en güncel ve güvenilir bilgi kaynağıdır. Kotlin dokümantasyonu için https://kotlinlang.org/ adresini ziyaret edebilirsiniz.
- Sürüm Kontrolü: Git gibi sürüm kontrol sistemleri kullanmak, kodunuzu yedeklemek, değişiklikleri takip etmek ve takım içinde çalışmak için hayati öneme sahiptir.
Kod:
// Daha temiz ve modern bir yaklaşım için View Binding veya Data Binding kullanın.
// build.gradle (Module: app) dosyasına ekleyin:
// android {
// ...
// buildFeatures {
// viewBinding true
// }
// }
// Kotlin kodunda kullanımı:
// import com.example.ilkandroiduygulamam.databinding.ActivityMainBinding
// ...
// private lateinit var binding: ActivityMainBinding
// override fun onCreate(savedInstanceState: Bundle?) {
// super.onCreate(savedInstanceState)
// binding = ActivityMainBinding.inflate(layoutInflater)
// setContentView(binding.root)
//
// binding.buttonGoster.setOnClickListener {
// val isim = binding.editTextGiris.text.toString()
// // ...
// }
// }