Jetpack Compose ile Basit Bir Çizim Ekranı Oluşturma

Bahadireray
2 min readAug 16, 2024

--

Jetpack Compose, Android geliştirmede modern ve deklaratif bir UI oluşturma aracıdır. Bu makalede, Jetpack Compose kullanarak basit bir çizim ekranı oluşturacağız. Çizim ekranı, kullanıcıların ekranda serbest çizim yapmalarını sağlayacak. Bu adım adım kılavuzda, Canvas kullanarak nasıl çizim yapacağınızı, kullanıcı etkileşimlerini nasıl yöneteceğinizi ve çizgileri nasıl çizeceğinizi öğreneceksiniz. E-imza gibi işlemlerde kullanabilirsiniz.

Adım 1: Gerekli Bağımlılıkları Ekleyin

Jetpack Compose kullanabilmek için, proje yapılandırmanızda gerekli bağımlılık

dependencies {
implementation "androidx.compose.ui:ui:1.4.0"
implementation "androidx.compose.material:material:1.4.0"
implementation "androidx.compose.ui:ui-tooling-preview:1.4.0"
// Diğer bağımlılıklar
}

Adım 2: Çizim Ekranı İçin Bir Composable Oluşturun

Bir DrawingScreen composable'ı oluşturarak ekranda çizim yapma yeteneği ekleyeceğiz. Canvas bileşenini kullanarak, kullanıcının dokunmatik ekran üzerinde çizim yapmasına olanak tanıyacağız.

@Composable
fun DrawingScreen() {
val lines = remember {
mutableStateListOf<Line>()
}
Box(
modifier = Modifier
.fillMaxSize(),
contentAlignment = Alignment.Center
) {
Canvas(
modifier = Modifier
.fillMaxWidth()
.pointerInput(true) {
detectDragGestures { change, dragAmount ->
change.consume()

val line = Line(
start = change.position - dragAmount,
end = change.position
)

lines.add(line)
}
}
) {
lines.forEach { line ->
drawLine(
color = line.color,
start = line.start,
end = line.end,
strokeWidth = line.strokeWidth.toPx(),
cap = StrokeCap.Round
)
}
}
}
}

Kod Açıklaması:

  • State Yönetimi: Çizilen çizgileri saklamak için bir mutableStateListOf<Line> oluşturuyoruz. Bu liste, kullanıcı ekranda çizim yaptıkça güncellenecektir.
  • Canvas Kullanımı: Canvas, çizim işlemlerini gerçekleştirebileceğimiz bir alan sağlar. pointerInput ile dokunmatik olayları algılarız ve detectDragGestures kullanarak sürükleme hareketlerini takip ederiz.
  • Çizgilerin Çizilmesi: Kullanıcının dokunma ve sürükleme hareketlerinden elde edilen koordinatları kullanarak çizgiler oluşturur ve bunları Canvas üzerinde çizeriz.

Adım 3: Line Veri Sınıfını Tanımlayın

Çizgileri temsil eden bir veri sınıfı oluşturuyoruz. Bu sınıf, çizginin başlangıç ve bitiş noktalarını, rengini ve kalınlığını içerir.

data class Line(
val start: Offset,
val end: Offset,
val color: Color = Color.Black,
val strokeWidth: Dp = 1.dp
)
  • start ve end: Çizginin başlangıç ve bitiş noktalarını temsil eder.
  • color: Çizginin rengini belirler.
  • strokeWidth: Çizginin kalınlığını ayarlar.

Adım 4: Sonuçları Gözden Geçirme

Bu örnek, Jetpack Compose kullanarak nasıl basit bir çizim ekranı oluşturabileceğinizi göstermektedir. Kullanıcılar, ekranda sürükleme hareketleri yaparak çizgiler oluşturabilir ve bu çizgiler Canvas üzerinde görüntülenir.

Bu uygulamayı daha da geliştirmek için, çizgi renklerini ve kalınlıklarını dinamik olarak değiştirebilir veya farklı şekiller çizebilirsiniz. Ayrıca, çizimlerinizi kaydetmek veya silmek gibi ek özellikler eklemeyi de düşünebilirsiniz.

Daha güzel günlerde görüşmek üzere :)

--

--