Upload Tugas 3
This commit is contained in:
		
							parent
							
								
									bfec4376b8
								
							
						
					
					
						commit
						bc6683a808
					
				
							
								
								
									
										
											BIN
										
									
								
								Tugas3/Cuplikan layar 2025-10-16 131908.png
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										
											BIN
										
									
								
								Tugas3/Cuplikan layar 2025-10-16 131908.png
									
									
									
									
									
										Normal file
									
								
							
										
											Binary file not shown.
										
									
								
							| 
		 After Width: | Height: | Size: 261 KiB  | 
							
								
								
									
										168
									
								
								Tugas3/MainActivity.kt
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										168
									
								
								Tugas3/MainActivity.kt
									
									
									
									
									
										Normal file
									
								
							@ -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()
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user