TUGAS 3 PPB - KEYSA ANADEA 5025211028
TUGAS 3 PPB
Deskripsi Proyek: Happy Birthday App
Nama: Keysa Anadea Aqiva Ajie
NRP: 5025211028
Kelas: PPB A
Nama Proyek
Happy Birthday App
Fitur Aplikasi
1. Tampilan Ucapan Ulang Tahun
Aplikasi ini menampilkan pesan ulang tahun dengan teks yang besar dan jelas di tengah layar.
- Pesan utama: "Happy Birthday Keysa!"
- Pengirim ucapan: "From Daffa"
- Teks dirancang dengan ukuran font yang berbeda untuk kesan estetis
2. Implementasi Jetpack Compose
Aplikasi ini menggunakan Jetpack Compose untuk membangun UI dengan kode yang lebih sederhana dan deklaratif.
- Menggunakan fungsi Composable untuk membuat tampilan teks.
- Menggunakan Material 3 Theme untuk mengikuti desain modern Android.
Alur Kerja Aplikasi
- Saat aplikasi dibuka,
MainActivity.kt
akan dijalankan. setContent { HappyBirthdayTheme { ... } }
akan menerapkan tema dariTheme.kt
.- Fungsi GreetingText() akan menampilkan teks
"Happy Birthday Keysa!"
dengan pengirim"From Daffa"
. - UI ditampilkan dengan Jetpack Compose, menggunakan tata letak Column untuk menyusun teks secara vertikal di tengah layar.
Tujuan & Manfaat
1. Mendemonstrasikan Jetpack Compose dalam pembuatan aplikasi Android sederhana.
2. Menggunakan Material 3 untuk desain modern & responsif.
3. Dapat dikembangkan lebih lanjut, misalnya dengan menambahkan fitur seperti:
- Input nama untuk membuat ucapan yang dinamis.
- Gambar latar belakang atau animasi untuk memperindah tampilan.
HASIL KODE:
KODE:
MainActivity.kt
package com.example.happybirthday
import android.os.Bundle
import androidx.activity.ComponentActivity
import androidx.activity.compose.setContent
import androidx.compose.foundation.layout.*
import androidx.compose.material3.*
import androidx.compose.runtime.Composable
import androidx.compose.ui.Alignment
import androidx.compose.ui.Modifier
import androidx.compose.ui.tooling.preview.Preview
import androidx.compose.ui.unit.dp
import androidx.compose.ui.unit.sp
import com.example.happybirthday.ui.theme.HappyBirthdayTheme
class MainActivity : ComponentActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContent {
HappyBirthdayTheme {
Surface(
modifier = Modifier.fillMaxSize(),
color = MaterialTheme.colorScheme.background
) {
GreetingText(
message = "Happy Birthday Keysa!",
from = "From Daffa"
)
}
}
}
}
}
@Composable
fun GreetingText(message: String, from: String, modifier: Modifier = Modifier) {
Column(
verticalArrangement = Arrangement.Center,
horizontalAlignment = Alignment.CenterHorizontally,
modifier = Modifier.fillMaxSize()
) {
Text(text = message, fontSize = 36.sp)
Spacer(modifier = Modifier.height(16.dp))
Text(text = from, fontSize = 24.sp)
}
}
@Preview(showBackground = true)
@Composable
fun GreetingPreview() {
HappyBirthdayTheme {
GreetingText(message = "Happy Birthday Keysa!", from = "From Daffa")
}
}
Theme.kt
package com.example.happybirthday.ui.theme
import androidx.compose.foundation.isSystemInDarkTheme
import androidx.compose.material3.*
import androidx.compose.runtime.Composable
import androidx.compose.ui.platform.LocalContext
import android.os.Build
private val DarkColorScheme = darkColorScheme(
primary = Purple80,
secondary = PurpleGrey80,
tertiary = Pink80
)
private val LightColorScheme = lightColorScheme(
primary = Purple40,
secondary = PurpleGrey40,
tertiary = Pink40
)
@Composable
fun HappyBirthdayTheme(
darkTheme: Boolean = isSystemInDarkTheme(),
dynamicColor: Boolean = true,
content: @Composable () -> Unit
) {
val colorScheme = when {
dynamicColor && Build.VERSION.SDK_INT >= Build.VERSION_CODES.S -> {
val context = LocalContext.current
if (darkTheme) dynamicDarkColorScheme(context) else dynamicLightColorScheme(context)
}
darkTheme -> DarkColorScheme
else -> LightColorScheme
}
MaterialTheme(
colorScheme = colorScheme,
typography = Typography,
content = content
)
}
Color.kt
package com.example.happybirthday.ui.theme
import androidx.compose.ui.graphics.Color
val Purple80 = Color(0xFFD0BCFF)
val PurpleGrey80 = Color(0xFFCCC2DC)
val Pink80 = Color(0xFFEFB8C8)
val Purple40 = Color(0xFF6650a4)
val PurpleGrey40 = Color(0xFF625b71)
val Pink40 = Color(0xFF7D5260)
Komentar
Posting Komentar