commit cce1dabf91c1ace114c6fca1817bf8a931e13f53 Author: 202310715002 RAFI FATTAN FITRIARDI <202310715002@mhs.ubharajaya.ac.id> Date: Wed Oct 15 18:58:49 2025 +0700 Upload files to "/" diff --git a/MainActivity.kt b/MainActivity.kt new file mode 100644 index 0000000..3f64717 --- /dev/null +++ b/MainActivity.kt @@ -0,0 +1,144 @@ +/* + Nama: Rafi Fattan Fitriardi + NPM : 202310715002 + */ + +package com.example.businesscard + +import android.os.Bundle +import androidx.activity.ComponentActivity +import androidx.activity.compose.setContent +import androidx.compose.foundation.Image +import androidx.compose.foundation.background +import androidx.compose.foundation.layout.* +import androidx.compose.foundation.shape.CircleShape +import androidx.compose.material.icons.Icons +import androidx.compose.material.icons.filled.Call +import androidx.compose.material.icons.filled.Email +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.graphics.Color +import androidx.compose.ui.layout.ContentScale +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.businesscard.ui.theme.BusinesscardTheme + +class MainActivity : ComponentActivity() { + override fun onCreate(savedInstanceState: Bundle?) { + super.onCreate(savedInstanceState) + setContent { + BusinesscardTheme { + Surface( + modifier = Modifier.fillMaxSize(), + color = MaterialTheme.colorScheme.background + ) { + ProfileCard() + } + } + } + } +} + +@Composable +fun ProfileCard() { + // Box untuk menumpuk background + konten + Box(modifier = Modifier.fillMaxSize()) { + + // 🔹 Background gambar + Image( + painter = painterResource(id = R.drawable.peak), // ganti dengan nama file gambar + contentDescription = null, + contentScale = ContentScale.Crop, + modifier = Modifier.fillMaxSize() + ) + + // 🔹 Overlay semi-transparan agar teks tetap terbaca + Box( + modifier = Modifier + .fillMaxSize() + .background(Color.Black.copy(alpha = 0.2f)) + ) + + // 🔹 Konten utama + Column( + modifier = Modifier + .fillMaxSize() + .padding(24.dp), + verticalArrangement = Arrangement.SpaceBetween, + horizontalAlignment = Alignment.CenterHorizontally + ) { + // Bagian Tengah (foto, nama, jabatan) + Column( + horizontalAlignment = Alignment.CenterHorizontally, + verticalArrangement = Arrangement.Center, + modifier = Modifier.fillMaxHeight(0.7f) + ) { + Image( + painter = painterResource(id = R.drawable.foto), // ganti dengan nama file fotomu + contentDescription = "Profile Picture", + contentScale = ContentScale.Crop, + modifier = Modifier + .size(120.dp) + .clip(CircleShape) + ) + + Spacer(modifier = Modifier.height(16.dp)) + + Text( + text = "Rafi Fattan Fitriardi", + fontSize = 24.sp, + fontWeight = FontWeight.Bold, + color = Color.White + ) + + Text( + text = "Mahasiswa", + fontSize = 20.sp, + color = Color.White.copy(alpha = 0.8f) + ) + } + + // Bagian Bawah (kontak) + Column( + horizontalAlignment = Alignment.Start, + verticalArrangement = Arrangement.Bottom + ) { + ContactItem(icon = Icons.Default.Call, info = "+6281219820199") + ContactItem(icon = Icons.Default.Share, info = "@rafifattan23") + ContactItem(icon = Icons.Default.Email, info = "202310715002@mhs.ubharajaya.ac.id") + } + } + } +} + +@Composable +fun ContactItem(icon: androidx.compose.ui.graphics.vector.ImageVector, info: String) { + Row( + verticalAlignment = Alignment.CenterVertically, + modifier = Modifier.padding(vertical = 4.dp) + ) { + Icon( + imageVector = icon, + contentDescription = null, + tint = Color.White, + modifier = Modifier.size(18.dp) + ) + Spacer(modifier = Modifier.width(8.dp)) + Text(text = info, fontSize = 14.sp, color = Color.White) + } +} + +@Preview(showBackground = true) +@Composable +fun ProfileCardPreview() { + BusinesscardTheme { + ProfileCard() + } +} diff --git a/Tugas 3.PNG b/Tugas 3.PNG new file mode 100644 index 0000000..ca1b6b7 Binary files /dev/null and b/Tugas 3.PNG differ