Jetpack Compose ile Modern UI Tasarımı: Başlangıç Rehberi

ibrahimcanerdogan
4 min readOct 26, 2024

--

Photo by weston m on Unsplash

Jetpack Compose, Android geliştirme sürecinde kullanıcı arayüzü (UI) oluşturma deneyimini tamamen yenileyen modern bir UI araç setidir. Bu araç sayesinde, XML yerine doğrudan Kotlin kodlarıyla arayüzler oluşturmak mümkün hale geliyor. Geleneksel Android UI sisteminden farklı olarak Jetpack Compose, daha az kodla daha okunabilir ve esnek arayüzler oluşturmayı sağlar. Bu rehberde Jetpack Compose’un temel yapılarını, bileşenlerini ve kullanım örneklerini inceleyeceğiz.

➡️ Jetpack Compose: İleri Seviye Uygulama Geliştirme Rehberi 🚀

➡️ Android App Development with Google MLKIT 🚀

➡️ Kotlin Interview Bootcamp: From Zero to Android Mastery 2024 🚀

➡️ Türk Hava Yolları Uçuş Asistanı | Kotlin Android Geliştirme 🚀

1. Jetpack Compose Nedir?

Jetpack Compose, Android UI tasarımı için Google tarafından geliştirilmiş bir modern UI çerçevesidir. Compose, XML dosyalarına ihtiyaç duymadan tamamen Kotlin dilinde yazılarak çalışır. Böylece UI geliştirme süreci daha hızlı, dinamik ve modüler hale gelir. Bazı temel özellikleri şunlardır:

  • Deklaratif Yaklaşım: Compose, UI bileşenlerinin nasıl görünmesi gerektiğini tanımlayarak UI’yi yönetir. Bu sayede UI duruma göre otomatik olarak güncellenir.
  • Daha Az Kod: XML ile kıyaslandığında, aynı işlevi daha az kodla gerçekleştirmeyi sağlar.
  • Gelişmiş Yeniden Kullanılabilirlik: UI bileşenleri, Compose içinde küçük modüler parçalar olarak yazılabilir ve yeniden kullanılabilir.

2. Jetpack Compose Kurulumu

Android Studio’nun yeni sürümleri, Compose ile uyumlu olarak gelir. Yeni bir proje oluştururken Compose kullanmak için “Empty Compose Activity” seçeneğini seçebilirsiniz. Eğer mevcut bir projeye Compose eklemek isterseniz, build.gradle dosyasına aşağıdaki bağımlılıkları eklemeniz gerekir:

dependencies {
implementation "androidx.compose.ui:ui:1.5.0"
implementation "androidx.compose.material:material:1.5.0"
implementation "androidx.compose.ui:ui-tooling-preview:1.5.0"
implementation "androidx.activity:activity-compose:1.7.2"
}

3. Compose Temel Yapısı: Composable Fonksiyonlar

Jetpack Compose, tüm UI bileşenlerini Composable fonksiyonlar olarak tanımlar. Composable bir fonksiyon, @Composable açıklama etiketine sahiptir. Bu etiket, fonksiyonun UI bileşeni olarak kullanılabileceğini belirtir.

@Composable
fun Greeting(name: String) {
Text(text = "Hello, $name!")
}

Bu basit örnek, bir metin bileşeni (Text) oluşturur ve ekranda "Hello, [name]!" ifadesini gösterir. Composable fonksiyonlar, arayüz öğelerini bir araya getirmek için temel yapı taşını oluşturur.

4. Temel Bileşenler

Compose, Android uygulamalarında sıkça kullanılan temel UI bileşenlerini içerir. Bu bileşenleri ve nasıl kullanıldıklarını inceleyelim:

a. Text

Text, ekranda yazı göstermek için kullanılan basit bir bileşendir. text parametresi ile gösterilecek metin belirlenir. Ek olarak fontSize, color, modifier gibi parametreler ile metin özellikleri özelleştirilebilir.

@Composable
fun SimpleText() {
Text(text = "Welcome to Jetpack Compose!", fontSize = 20.sp, color = Color.Blue)
}

b. Button

Button, kullanıcının tıklayabileceği bir bileşendir. onClick parametresi ile butona tıklanınca yapılacak işlem belirlenir.

@Composable
fun SimpleButton() {
Button(onClick = { /* Tıklanınca yapılacak işlemler */ }) {
Text(text = "Click Me")
}
}

c. Image

Image bileşeni, ekranda görsel göstermek için kullanılır. painterResource fonksiyonu ile bir görsel kaynağı belirtilir.

@Composable
fun SimpleImage() {
Image(painter = painterResource(id = R.drawable.sample_image), contentDescription = "Sample Image")
}

d. TextField

TextField, kullanıcının veri girmesi için kullanılan bir bileşendir. value ve onValueChange parametreleri ile kullanıcının girdiği veri yönetilebilir.

@Composable
fun SimpleTextField() {
var text by remember { mutableStateOf("") }
TextField(value = text, onValueChange = { text = it }, label = { Text("Enter text") })
}

5. Layout ve Yerleşim Bileşenleri

Jetpack Compose, UI düzenini organize etmek için çeşitli yerleşim bileşenleri sunar. Column, Row, ve Box gibi bileşenler ile UI öğelerinin nasıl düzenleneceğini belirleyebilirsiniz.

a. Column

Column, bileşenleri dikey olarak üst üste yerleştirir.

@Composable
fun VerticalLayout() {
Column {
Text(text = "Hello, World!")
Button(onClick = { /* ... */ }) {
Text(text = "Button in Column")
}
}
}

b. Row

Row, bileşenleri yatay olarak yan yana yerleştirir.

@Composable
fun HorizontalLayout() {
Row {
Text(text = "Hello")
Text(text = "World")
}
}

c. Box

Box, bileşenleri üst üste koymak için kullanılır.

@Composable
fun OverlappingLayout() {
Box {
Text(text = "Background Text", fontSize = 24.sp, color = Color.Gray)
Text(text = "Foreground Text", fontSize = 16.sp, color = Color.Black)
}
}

6. Durum Yönetimi

Compose, kullanıcı etkileşimleri sonucunda UI’nin güncellenmesi için State kavramını kullanır. remember ve mutableStateOf ile bileşenler içinde durum oluşturabilirsiniz.

@Composable
fun Counter() {
var count by remember { mutableStateOf(0) }
Column {
Text(text = "Count: $count")
Button(onClick = { count++ }) {
Text(text = "Increment")
}
}
}

Bu örnekte, butona tıklandıkça count değeri artar ve UI otomatik olarak güncellenir.

7. Modifier ile Özelleştirme

Compose, bileşenleri özelleştirmek ve yerleştirmek için Modifier sınıfını kullanır. Modifier ile bileşenlerin boyutu, konumu, arka planı gibi özelliklerini ayarlayabilirsiniz.

@Composable
fun ModifiedText() {
Text(
text = "Styled Text",
modifier = Modifier
.padding(16.dp)
.background(Color.LightGray)
.fillMaxWidth()
.clickable { /* Tıklanınca yapılacak işlemler */ },
fontSize = 20.sp
)
}

8. Temalar ve Materyal Tasarım

Compose, Google’ın Materyal Tasarımı prensiplerini destekler. Material bileşenleri ve MaterialTheme ile, uygulamanızın tüm bileşenleri için tutarlı bir stil oluşturabilirsiniz.

@Composable
fun MyAppTheme() {
MaterialTheme {
Surface(color = MaterialTheme.colors.background) {
Greeting("Compose")
}
}
}

9. Animasyonlar

Jetpack Compose, kullanıcı deneyimini zenginleştiren animasyonlar oluşturmayı kolaylaştırır. animate ve transition gibi özellikler ile animasyonlu geçişler yapabilirsiniz.

@Composable
fun AnimatedBox() {
var size by remember { mutableStateOf(100.dp) }
val animatedSize by animateDpAsState(targetValue = size)

Box(
modifier = Modifier
.size(animatedSize)
.background(Color.Blue)
.clickable { size += 50.dp }
)
}

10. Jetpack Compose ile Modern UI Geliştirme

Jetpack Compose, Android UI tasarımında daha hızlı ve modüler bir yaklaşım sağlar. Deklaratif yapısı, kod okunabilirliğini artırır ve UI’yi daha dinamik hale getirir. Kotlin ile tamamen entegre çalışan Compose, Android geliştiriciler için güçlü bir araçtır.

Sonuç

Jetpack Compose, modern Android UI tasarımı için son derece güçlü ve esnek bir araç seti sunar. Bu başlangıç rehberinde Jetpack Compose’un temel yapılarını ve kullanım alanlarını inceledik. Compose, daha az kodla daha şık, modüler ve kullanıcı odaklı arayüzler oluşturmayı mümkün kılar.

İbrahim Can Erdoğan

LINKEDIN

YOUTUBE

UDEMY

GITHUB

--

--

ibrahimcanerdogan
ibrahimcanerdogan

Written by ibrahimcanerdogan

Hi, My name is Ibrahim, I am developing ebebek android app within Ebebek. I publish various articles in the field of programming and self-improvement.

No responses yet