Tugas-Individu./Tugas3/MainActivity.kt

169 lines
5.3 KiB
Kotlin

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()
}
}