TugasKartuNama
This commit is contained in:
		
						commit
						4a6c483c72
					
				
							
								
								
									
										254
									
								
								KarnamMainActivity.kt
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										254
									
								
								KarnamMainActivity.kt
									
									
									
									
									
										Normal file
									
								
							@ -0,0 +1,254 @@
 | 
				
			|||||||
 | 
					package com.example.businesscard
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					import android.os.Bundle
 | 
				
			||||||
 | 
					import androidx.activity.ComponentActivity
 | 
				
			||||||
 | 
					import androidx.activity.compose.setContent
 | 
				
			||||||
 | 
					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.text.font.FontWeight
 | 
				
			||||||
 | 
					import androidx.compose.ui.tooling.preview.Preview
 | 
				
			||||||
 | 
					import androidx.compose.ui.unit.dp
 | 
				
			||||||
 | 
					import androidx.compose.ui.unit.sp
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					class MainActivity : ComponentActivity() {
 | 
				
			||||||
 | 
					    override fun onCreate(savedInstanceState: Bundle?) {
 | 
				
			||||||
 | 
					        super.onCreate(savedInstanceState)
 | 
				
			||||||
 | 
					        setContent {
 | 
				
			||||||
 | 
					            MaterialTheme {
 | 
				
			||||||
 | 
					                BusinessCardApp()
 | 
				
			||||||
 | 
					            }
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					@Composable
 | 
				
			||||||
 | 
					fun BusinessCardApp() {
 | 
				
			||||||
 | 
					    Box(
 | 
				
			||||||
 | 
					        modifier = Modifier
 | 
				
			||||||
 | 
					            .fillMaxSize()
 | 
				
			||||||
 | 
					            .background(
 | 
				
			||||||
 | 
					                Brush.verticalGradient(
 | 
				
			||||||
 | 
					                    colors = listOf(
 | 
				
			||||||
 | 
					                        Color(0xFF0F2027),
 | 
				
			||||||
 | 
					                        Color(0xFF203A43),
 | 
				
			||||||
 | 
					                        Color(0xFF2C5364)
 | 
				
			||||||
 | 
					                    )
 | 
				
			||||||
 | 
					                )
 | 
				
			||||||
 | 
					            ),
 | 
				
			||||||
 | 
					        contentAlignment = Alignment.Center
 | 
				
			||||||
 | 
					    ) {
 | 
				
			||||||
 | 
					        Card(
 | 
				
			||||||
 | 
					            modifier = Modifier
 | 
				
			||||||
 | 
					                .padding(24.dp)
 | 
				
			||||||
 | 
					                .fillMaxWidth()
 | 
				
			||||||
 | 
					                .shadow(
 | 
				
			||||||
 | 
					                    elevation = 20.dp,
 | 
				
			||||||
 | 
					                    shape = RoundedCornerShape(24.dp),
 | 
				
			||||||
 | 
					                    spotColor = Color(0xFF00D4FF)
 | 
				
			||||||
 | 
					                ),
 | 
				
			||||||
 | 
					            shape = RoundedCornerShape(24.dp),
 | 
				
			||||||
 | 
					            colors = CardDefaults.cardColors(
 | 
				
			||||||
 | 
					                containerColor = Color(0xFF1A1A2E).copy(alpha = 0.95f)
 | 
				
			||||||
 | 
					            )
 | 
				
			||||||
 | 
					        ) {
 | 
				
			||||||
 | 
					            Column(
 | 
				
			||||||
 | 
					                modifier = Modifier
 | 
				
			||||||
 | 
					                    .padding(32.dp)
 | 
				
			||||||
 | 
					                    .fillMaxWidth(),
 | 
				
			||||||
 | 
					                horizontalAlignment = Alignment.CenterHorizontally
 | 
				
			||||||
 | 
					            ) {
 | 
				
			||||||
 | 
					                // Avatar Section
 | 
				
			||||||
 | 
					                Box(
 | 
				
			||||||
 | 
					                    modifier = Modifier
 | 
				
			||||||
 | 
					                        .size(120.dp)
 | 
				
			||||||
 | 
					                        .clip(CircleShape)
 | 
				
			||||||
 | 
					                        .background(
 | 
				
			||||||
 | 
					                            Brush.linearGradient(
 | 
				
			||||||
 | 
					                                colors = listOf(
 | 
				
			||||||
 | 
					                                    Color(0xFF00D4FF),
 | 
				
			||||||
 | 
					                                    Color(0xFF0094FF)
 | 
				
			||||||
 | 
					                                )
 | 
				
			||||||
 | 
					                            )
 | 
				
			||||||
 | 
					                        )
 | 
				
			||||||
 | 
					                        .padding(4.dp),
 | 
				
			||||||
 | 
					                    contentAlignment = Alignment.Center
 | 
				
			||||||
 | 
					                ) {
 | 
				
			||||||
 | 
					                    Box(
 | 
				
			||||||
 | 
					                        modifier = Modifier
 | 
				
			||||||
 | 
					                            .fillMaxSize()
 | 
				
			||||||
 | 
					                            .clip(CircleShape)
 | 
				
			||||||
 | 
					                            .background(Color(0xFF16213E)),
 | 
				
			||||||
 | 
					                        contentAlignment = Alignment.Center
 | 
				
			||||||
 | 
					                    ) {
 | 
				
			||||||
 | 
					                        Text(
 | 
				
			||||||
 | 
					                            text = "DP",
 | 
				
			||||||
 | 
					                            fontSize = 48.sp,
 | 
				
			||||||
 | 
					                            fontWeight = FontWeight.Bold,
 | 
				
			||||||
 | 
					                            color = Color(0xFF00D4FF)
 | 
				
			||||||
 | 
					                        )
 | 
				
			||||||
 | 
					                    }
 | 
				
			||||||
 | 
					                }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					                Spacer(modifier = Modifier.height(24.dp))
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					                // Name
 | 
				
			||||||
 | 
					                Text(
 | 
				
			||||||
 | 
					                    text = "Dendi Yogia Pratama",
 | 
				
			||||||
 | 
					                    fontSize = 26.sp,
 | 
				
			||||||
 | 
					                    fontWeight = FontWeight.Bold,
 | 
				
			||||||
 | 
					                    color = Color.White
 | 
				
			||||||
 | 
					                )
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					                Spacer(modifier = Modifier.height(8.dp))
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					                // Title
 | 
				
			||||||
 | 
					                Text(
 | 
				
			||||||
 | 
					                    text = "Market Analyze",
 | 
				
			||||||
 | 
					                    fontSize = 18.sp,
 | 
				
			||||||
 | 
					                    color = Color(0xFF00D4FF),
 | 
				
			||||||
 | 
					                    fontWeight = FontWeight.Medium
 | 
				
			||||||
 | 
					                )
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					                Spacer(modifier = Modifier.height(4.dp))
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					                Text(
 | 
				
			||||||
 | 
					                    text = "Teknikal Specialis",
 | 
				
			||||||
 | 
					                    fontSize = 14.sp,
 | 
				
			||||||
 | 
					                    color = Color(0xFFB0B0B0)
 | 
				
			||||||
 | 
					                )
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					                Spacer(modifier = Modifier.height(32.dp))
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					                // Divider
 | 
				
			||||||
 | 
					                Box(
 | 
				
			||||||
 | 
					                    modifier = Modifier
 | 
				
			||||||
 | 
					                        .fillMaxWidth()
 | 
				
			||||||
 | 
					                        .height(1.dp)
 | 
				
			||||||
 | 
					                        .background(
 | 
				
			||||||
 | 
					                            Brush.horizontalGradient(
 | 
				
			||||||
 | 
					                                colors = listOf(
 | 
				
			||||||
 | 
					                                    Color.Transparent,
 | 
				
			||||||
 | 
					                                    Color(0xFF00D4FF),
 | 
				
			||||||
 | 
					                                    Color.Transparent
 | 
				
			||||||
 | 
					                                )
 | 
				
			||||||
 | 
					                            )
 | 
				
			||||||
 | 
					                        )
 | 
				
			||||||
 | 
					                )
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					                Spacer(modifier = Modifier.height(32.dp))
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					                // Contact Info
 | 
				
			||||||
 | 
					                ContactItem(
 | 
				
			||||||
 | 
					                    icon = Icons.Default.Phone,
 | 
				
			||||||
 | 
					                    text = "+62 812 3456 7890"
 | 
				
			||||||
 | 
					                )
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					                Spacer(modifier = Modifier.height(16.dp))
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					                ContactItem(
 | 
				
			||||||
 | 
					                    icon = Icons.Default.Share,
 | 
				
			||||||
 | 
					                    text = "@dendiyogia"
 | 
				
			||||||
 | 
					                )
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					                Spacer(modifier = Modifier.height(16.dp))
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					                ContactItem(
 | 
				
			||||||
 | 
					                    icon = Icons.Default.Email,
 | 
				
			||||||
 | 
					                    text = "dendiyogiap@email.com"
 | 
				
			||||||
 | 
					                )
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					                Spacer(modifier = Modifier.height(32.dp))
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					                // Action Button
 | 
				
			||||||
 | 
					                Button(
 | 
				
			||||||
 | 
					                    onClick = { },
 | 
				
			||||||
 | 
					                    modifier = Modifier
 | 
				
			||||||
 | 
					                        .fillMaxWidth()
 | 
				
			||||||
 | 
					                        .height(56.dp),
 | 
				
			||||||
 | 
					                    shape = RoundedCornerShape(16.dp),
 | 
				
			||||||
 | 
					                    colors = ButtonDefaults.buttonColors(
 | 
				
			||||||
 | 
					                        containerColor = Color.Transparent
 | 
				
			||||||
 | 
					                    ),
 | 
				
			||||||
 | 
					                    contentPadding = PaddingValues(0.dp)
 | 
				
			||||||
 | 
					                ) {
 | 
				
			||||||
 | 
					                    Box(
 | 
				
			||||||
 | 
					                        modifier = Modifier
 | 
				
			||||||
 | 
					                            .fillMaxSize()
 | 
				
			||||||
 | 
					                            .background(
 | 
				
			||||||
 | 
					                                Brush.horizontalGradient(
 | 
				
			||||||
 | 
					                                    colors = listOf(
 | 
				
			||||||
 | 
					                                        Color(0xFF00D4FF),
 | 
				
			||||||
 | 
					                                        Color(0xFF0094FF)
 | 
				
			||||||
 | 
					                                    )
 | 
				
			||||||
 | 
					                                )
 | 
				
			||||||
 | 
					                            ),
 | 
				
			||||||
 | 
					                        contentAlignment = Alignment.Center
 | 
				
			||||||
 | 
					                    ) {
 | 
				
			||||||
 | 
					                        Text(
 | 
				
			||||||
 | 
					                            text = "SAVE CONTACT",
 | 
				
			||||||
 | 
					                            fontWeight = FontWeight.Bold,
 | 
				
			||||||
 | 
					                            fontSize = 16.sp,
 | 
				
			||||||
 | 
					                            color = Color.White
 | 
				
			||||||
 | 
					                        )
 | 
				
			||||||
 | 
					                    }
 | 
				
			||||||
 | 
					                }
 | 
				
			||||||
 | 
					            }
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					@Composable
 | 
				
			||||||
 | 
					fun ContactItem(icon: ImageVector, text: String) {
 | 
				
			||||||
 | 
					    Row(
 | 
				
			||||||
 | 
					        modifier = Modifier.fillMaxWidth(),
 | 
				
			||||||
 | 
					        verticalAlignment = Alignment.CenterVertically
 | 
				
			||||||
 | 
					    ) {
 | 
				
			||||||
 | 
					        Box(
 | 
				
			||||||
 | 
					            modifier = Modifier
 | 
				
			||||||
 | 
					                .size(48.dp)
 | 
				
			||||||
 | 
					                .clip(RoundedCornerShape(12.dp))
 | 
				
			||||||
 | 
					                .background(
 | 
				
			||||||
 | 
					                    Color(0xFF00D4FF).copy(alpha = 0.1f)
 | 
				
			||||||
 | 
					                ),
 | 
				
			||||||
 | 
					            contentAlignment = Alignment.Center
 | 
				
			||||||
 | 
					        ) {
 | 
				
			||||||
 | 
					            Icon(
 | 
				
			||||||
 | 
					                imageVector = icon,
 | 
				
			||||||
 | 
					                contentDescription = null,
 | 
				
			||||||
 | 
					                tint = Color(0xFF00D4FF),
 | 
				
			||||||
 | 
					                modifier = Modifier.size(24.dp)
 | 
				
			||||||
 | 
					            )
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        Spacer(modifier = Modifier.width(16.dp))
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        Text(
 | 
				
			||||||
 | 
					            text = text,
 | 
				
			||||||
 | 
					            fontSize = 16.sp,
 | 
				
			||||||
 | 
					            color = Color.White.copy(alpha = 0.9f)
 | 
				
			||||||
 | 
					        )
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					@Preview(showBackground = true)
 | 
				
			||||||
 | 
					@Composable
 | 
				
			||||||
 | 
					fun PreviewBusinessCard() {
 | 
				
			||||||
 | 
					    MaterialTheme {
 | 
				
			||||||
 | 
					        BusinessCardApp()
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
							
								
								
									
										
											BIN
										
									
								
								Screenshot 2025-10-16 at 14.44.08.png
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										
											BIN
										
									
								
								Screenshot 2025-10-16 at 14.44.08.png
									
									
									
									
									
										Normal file
									
								
							
										
											Binary file not shown.
										
									
								
							| 
		 After Width: | Height: | Size: 384 KiB  | 
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user