Jetpack Compose: Film Kütüphanesi Uygulaması Geliştirme Rehberi

ibrahimcanerdogan
3 min readMay 23, 2024

--

Android uygulama geliştirmenin geleceği Jetpack Compose ile şekilleniyor! Bu kurs, Jetpack Compose’u kullanarak çeşitli Android uygulamaları geliştirmenin inceliklerini ve ileri seviye tekniklerini öğretmek için tasarlanmıştır.

➡️ SERTİFİKALI JETPACK COMPOSE KURSU 💯

Kurs boyunca, adım adım ilerleyerek Jetpack Compose’un temellerini öğrenecek ve gelişmiş yeteneklerini keşfedeceksiniz. Her bir bölüm, pratik projeler ve örneklerle desteklenmiştir, böylece öğrendiklerinizi hemen uygulayabilirsiniz.

Kursun İçeriği:

  • Jetpack Compose Temelleri: Gelişmiş UI tasarımı ve layout yönetimi.
  • Gelişmiş UI Tasarımı: Animasyonlar, dokunmatik etkileşimler ve modern kullanıcı deneyimi.
  • Veri Yönetimi ve State Yönetimi: Veri akışları, ViewModel’ler ve state yönetimi teknikleri.
  • Uygulama Geliştirme Stratejileri: Performans optimizasyonu, kod kalitesi ve best practices.
  • Gerçek Dünya Projeleri: Pratik uygulamalar ve senaryolar üzerinde çalışmalar.

Kursun Sonunda Ne Elde Edeceksiniz?

Bu kursu tamamladıktan sonra, Jetpack Compose’u ustalıkla kullanarak gelişmiş Android uygulamaları geliştirebileceksiniz. Modern UI tasarımı, veri yönetimi, performans optimizasyonu ve daha fazlası konusunda derin bir bilgiye sahip olacaksınız.

Uygulama Geliştirme

Aşağıda bir film öğesini temsil eden bir Kotlin veri sınıfı bulunmaktadır. Bu sınıf, bir filmin IMDB kimliği, oyuncuları, ödülleri, ülke bilgisi, yönetmeni, türü, görselleri, dili, MetaScore puanı, konusu, afişi, derecelendirmesi, çıkış tarihi, başlığı, türü, yazarı, yılı, IMDB puanı ve oyları gibi çeşitli özelliklerini içerir.

data class MovieItem(
val movieImdbID: String,
val movieComingSoon: Boolean,
val movieActors: String,
val movieAwards: String,
val movieCountry: String,
val movieDirector: String,
val movieGenre: String,
val movieImages: List<String>,
val movieLanguage: String,
val movieMetaScore: String,
val moviePlot: String,
val moviePoster: String,
val movieRate: String,
val movieReleased: String,
val movieTitle: String,
val movieType: String,
val movieWriter: String,
val movieYear: String,
val movieImdbRating: String,
val movieImdbVotes: String
)

Bu bileşen, uygulamanın ana ekranını tanımlar ve kullanıcıya filmlerle ilgili içeriği sunar. Üstteki uygulama çubuğu, uygulamanın başlığını gösterirken, altındaki içerik alanı, filmlerle ilgili detayları göstermek için kullanılır. Jetpack Compose’un sunduğu esneklikle, bu tür bileşenleri kolayca oluşturabilir ve uygulamanıza entegre edebilirsiniz.

@OptIn(ExperimentalMaterial3Api::class)
@Composable
fun HomeScreen(navController: NavController) {
Scaffold(
topBar = {
TopAppBar(
title = { Text(text = "Movies") },
colors = TopAppBarDefaults.topAppBarColors(
containerColor = Color1Beige,
titleContentColor = Color.Black
)
)
}
) {
Column(
modifier = Modifier
.fillMaxSize()
.background(Color1Beige)
.padding(it)
) {
MovieContent(
navController = navController
)
}
}
}

Bu bileşen, seçilen bir film hakkında detaylı bilgileri gösterir ve kullanıcıya favorilere ekleme seçeneği sunar. Jetpack Compose’un sunduğu esneklikle, bu tür bileşenleri kolayca oluşturabilir ve uygulamanıza entegre edebilirsiniz.

@OptIn(ExperimentalMaterial3Api::class)
@Composable
fun DetailScreen(
modifier: Modifier = Modifier,
navController: NavController,
movieId: String?
) {
val context = LocalContext.current
val detailedMovie = getDummyMovie().first { it.movieImdbID == movieId }

Scaffold(
topBar = {
TopAppBar(
title = { Text(text = detailedMovie.movieTitle) },
colors = TopAppBarDefaults.topAppBarColors(
containerColor = Color1Beige,
titleContentColor = Color.Black
),
navigationIcon = {
IconButton(onClick = { navController.popBackStack() }) {
Icon(
imageVector = Icons.AutoMirrored.Default.ArrowBack,
tint = Color.Black,
contentDescription = "Detail Back"
)
}
},
actions = {
IconButton(onClick = {
Toast.makeText(
context,
"${detailedMovie.movieTitle} added to favorites.",
Toast.LENGTH_SHORT
).show()
}) {
Icon(
imageVector = Icons.Filled.Favorite,
tint = Color.Red,
contentDescription = "Detail Favorite"
)
}
}
)
}
) {
Column(
modifier = modifier
.fillMaxSize()
.background(Color1Beige)
.padding(it),
horizontalAlignment = Alignment.CenterHorizontally,
verticalArrangement = Arrangement.Center
) {
MainContent(movieItem = detailedMovie)
}
}

}

Bu bölümde, Jetpack Compose kullanarak uygulama içi gezinmeyi (navigation) sağlayan bir bileşen oluşturacağız. Bu bileşen, farklı ekranlara gezinme yeteneği sağlar. Aşağıdaki kod parçacığı, bu bileşeni nasıl oluşturabileceğinizi gösterir:

@Composable
fun MovieNavigation() {
val navController = rememberNavController()

NavHost(
navController = navController,
startDestination = MovieScreens.HomeScreen.name
) {
composable(MovieScreens.HomeScreen.name) {
HomeScreen(navController = navController)
}
composable(MovieScreens.DetailScreen.name + "/{movieID}",
arguments = listOf(
navArgument("movieID") { type = NavType.StringType }
)
) {
DetailScreen(
navController = navController,
movieId = it.arguments?.getString("movieID")
)
}
}
}

Daha fazlası için GITHUB profilimi inceleyebilirsiniz.

Eğitmen;

Merhabalar,

Ben İbrahim Can Erdoğan, Balıkesir Üniversitesi Endüstri mühendisliği bölümünden 2022 senesinde mezun oldum. Java ve Kotlin ile ileri seviye Android uygulamaları geliştiriyorum. Android alanında çalışmalarımı sürdürüyorum. Ayrıca Blockchain teknolojisi ile ilgileniyorum. Şuanda Kotlin ile Android uygulamalar geliştiriyorum. Kariyerimde Yapı Kredi, QNB Finansbank, Ebebek ve LOGO Yazılım gibi Türkiye’nin önde gelen şirketlerinde stajlar gerçekleştirdim. LOGO Yazılım bünyesinde Yazılım Geliştirme Uzmanı olarak Android uygulamaların geliştirilmesine katkı sağladım. Şu anda ebebek bünyesinde Android Yazılım Geliştirme Uzmanı olarak rol almaktayım. Yeni yeni bilgiler öğrenmeye ve bu öğrendiklerimi kullanmaya çalışıyorum. Azmim ve hırsım ile her zaman daha iyisine ulaşmaya ve elimden gelenin her zaman en iyisi yapmaya çalışıyorum.

Teşekkür ederim

Hazır mısınız? Hemen Kaydolun ve Kariyerinizi Yükseltmeye Başlayın!

İ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