diff --git a/Tugas3/Cuplikan layar 2025-10-16 131908.png b/Tugas3/Cuplikan layar 2025-10-16 131908.png new file mode 100644 index 0000000..1e8d652 Binary files /dev/null and b/Tugas3/Cuplikan layar 2025-10-16 131908.png differ diff --git a/Tugas3/MainActivity.kt b/Tugas3/MainActivity.kt new file mode 100644 index 0000000..469d7b6 --- /dev/null +++ b/Tugas3/MainActivity.kt @@ -0,0 +1,168 @@ +package com.example.cardname + +import android.os.Bundle +import androidx.activity.ComponentActivity +import androidx.activity.compose.setContent +import androidx.activity.enableEdgeToEdge +import androidx.compose.foundation.Image +import androidx.compose.foundation.background +import androidx.compose.foundation.layout.* +import androidx.compose.foundation.shape.CircleShape +import androidx.compose.foundation.shape.RoundedCornerShape +import androidx.compose.material.icons.Icons +import androidx.compose.material.icons.filled.Email +import androidx.compose.material.icons.filled.Phone +import androidx.compose.material.icons.filled.Share +import androidx.compose.material3.* +import androidx.compose.runtime.Composable +import androidx.compose.ui.Alignment +import androidx.compose.ui.Modifier +import androidx.compose.ui.draw.clip +import androidx.compose.ui.draw.shadow +import androidx.compose.ui.graphics.Brush +import androidx.compose.ui.graphics.Color +import androidx.compose.ui.graphics.vector.ImageVector +import androidx.compose.ui.res.painterResource +import androidx.compose.ui.text.font.FontWeight +import androidx.compose.ui.tooling.preview.Preview +import androidx.compose.ui.unit.dp +import androidx.compose.ui.unit.sp +import com.example.cardname.ui.theme.CardNameTheme + +class MainActivity : ComponentActivity() { + override fun onCreate(savedInstanceState: Bundle?) { + super.onCreate(savedInstanceState) + enableEdgeToEdge() + setContent { + CardNameTheme { + Surface( + modifier = Modifier + .fillMaxSize() + .background( + brush = Brush.verticalGradient( + colors = listOf( + Color(0xFF4A90E2), + Color(0xFF50E3C2) + ) + ) + ), + ) { + BusinessCard() + } + } + } + } +} + +@Composable +fun BusinessCard() { + Box( + modifier = Modifier + .fillMaxSize(), + contentAlignment = Alignment.Center + ) { + // Kartu utama + Card( + modifier = Modifier + .width(320.dp) + .height(460.dp) + .shadow(12.dp, RoundedCornerShape(24.dp)), + shape = RoundedCornerShape(24.dp), + colors = CardDefaults.cardColors( + containerColor = Color.White + ) + ) { + Column( + modifier = Modifier + .fillMaxSize() + .padding(24.dp), + horizontalAlignment = Alignment.CenterHorizontally, + verticalArrangement = Arrangement.SpaceBetween + ) { + + Spacer(modifier = Modifier.height(8.dp)) + + // Foto profil + Image( + painter = painterResource(id = R.drawable.ic_launcher_foreground), + contentDescription = "Profile Picture", + modifier = Modifier + .size(100.dp) + .clip(CircleShape) + ) + + // Nama dan title + Column(horizontalAlignment = Alignment.CenterHorizontally) { + Text( + text = "Dimas Hendri Pamungkas", + fontSize = 22.sp, + fontWeight = FontWeight.Bold, + color = Color(0xFF333333) + ) + Text( + text = "Android Developer", + fontSize = 16.sp, + color = Color.Gray + ) + } + + // Garis pembatas + Divider( + color = Color(0xFFE0E0E0), + thickness = 1.dp, + modifier = Modifier.padding(vertical = 12.dp) + ) + + // Informasi kontak + Column( + horizontalAlignment = Alignment.Start, + verticalArrangement = Arrangement.spacedBy(10.dp) + ) { + ContactInfo( + icon = Icons.Default.Phone, + text = "+62 812 3456 7890" + ) + ContactInfo( + icon = Icons.Default.Share, + text = "@dimas_hp" + ) + ContactInfo( + icon = Icons.Default.Email, + text = "dimas@email.com" + ) + } + + Spacer(modifier = Modifier.height(8.dp)) + } + } + } +} + +@Composable +fun ContactInfo(icon: ImageVector, text: String) { + Row( + verticalAlignment = Alignment.CenterVertically, + modifier = Modifier.fillMaxWidth() + ) { + Icon( + imageVector = icon, + contentDescription = null, + tint = Color(0xFF4A90E2), + modifier = Modifier.size(22.dp) + ) + Spacer(modifier = Modifier.width(10.dp)) + Text( + text = text, + fontSize = 15.sp, + color = Color(0xFF333333) + ) + } +} + +@Preview(showBackground = true) +@Composable +fun BusinessCardPreview() { + CardNameTheme { + BusinessCard() + } +}