Tugas3
This commit is contained in:
		
							parent
							
								
									491be009f0
								
							
						
					
					
						commit
						24a2c0e492
					
				
							
								
								
									
										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()
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user