Membuat Aplikasi Kalkulator dengan menggunakan Kotlin
Burhanudin Rifa - 5025201191
PPB - D
Github: Link
Youtube: Link
1. MainActivity
class MainActivity : ComponentActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContent {
CalculatorTheme {
CalculatorApp(applicationContext)
}
}
}
}
- ComponentActivity: Activity dasar yang mendukung Compose.
- setContent { … }: Menetapkan konten Compose.
- CalculatorTheme { … }: Menerapkan tema kustom (dibahas di bagian 6).
- CalculatorApp(applicationContext): Memanggil composable utama, meneruskan Context untuk menampilkan Toast.
2. Composable Utama: CalculatorApp
@OptIn(ExperimentalMaterial3Api::class)
@Composable
fun CalculatorApp(applicationContext: android.content.Context) {
var num1 by remember { mutableStateOf("0") }
var num2 by remember { mutableStateOf("0") }
var resultText by remember { mutableStateOf("") }
Surface(
modifier = Modifier.fillMaxSize(),
color = MaterialTheme.colorScheme.background
) {
Column(
modifier = Modifier
.fillMaxSize()
.padding(16.dp),
horizontalAlignment = Alignment.CenterHorizontally
)
State
num1, num2 (tipe String): Menyimpan input angka.
resultText (tipe String): Menyimpan teks hasil operasi.
Semua di-wrap dengan remember { mutableStateOf(...) } agar Compose me-recompose UI saat nilainya berubah.
Surface
Wadah dasar, mengisi seluruh layar (fillMaxSize()) dengan warna latar dari tema.
Column
Menyusun elemen UI secara vertikal, dengan padding dan alignment center horizontal.
Abstraksi tombol: ukuran statis (150×60 dp), warna container dapat disesuaikan, sudut membulat.
-
Menampilkan
textdengan gaya bold size 18sp.
8. Tema Kustom CalculatorTheme
@Composable
fun CalculatorTheme(content: @Composable () -> Unit) {
// Custom color scheme
val colorScheme = darkColorScheme(
primary = Color(0xFF4CAF50), // Green
onPrimary = Color.White,
primaryContainer = Color(0xFF1E3A20),
onPrimaryContainer = Color(0xFFB6F2B8),
secondary = Color(0xFF2196F3), // Blue
onSecondary = Color.White,
tertiary = Color(0xFFFF9800), // Orange
onTertiary = Color.Black,
error = Color(0xFFE91E63), // Pink
background = Color(0xFF121212), // Dark background
surface = Color(0xFF1E1E1E),
onBackground = Color.White,
onSurface = Color.White
)
MaterialTheme(
colorScheme = colorScheme,
typography = Typography(
headlineMedium = TextStyle(
fontWeight = FontWeight.Bold,
fontSize = 30.sp,
letterSpacing = 0.5.sp
),
bodyLarge = TextStyle(
fontWeight = FontWeight.Normal,
fontSize = 16.sp,
letterSpacing = 0.5.sp
)
),
content = content
)
}
- darkColorScheme: Palet warna gelap.
- Tipografi: Kustom untuk headlineMedium dan bodyLarge.
- MaterialTheme membungkus seluruh UI agar menggunakan warna dan tipografi ini.
Comments
Post a Comment