Jetpack Compose: Film Kütüphanesi Uygulaması Geliştirme Rehberi
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.
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!