Tugas 7 Simple Login Page
Nama : Mohammad Ahnaf Fauzan
NRP : 5025211170
Pada pertemuan ini kami diminta untuk membuat simple login page, berikut merupakan kode yang digunakan:
package com.example.mylogin
import android.os.Bundle
import androidx.compose.runtime.remember
import androidx.compose.runtime.mutableStateOf
import androidx.activity.ComponentActivity
import androidx.activity.compose.setContent
import androidx.activity.enableEdgeToEdge
import androidx.compose.foundation.Image
import androidx.compose.foundation.layout.*
import androidx.compose.foundation.text.KeyboardOptions
import androidx.compose.material3.*
import androidx.compose.runtime.Composable
import androidx.compose.ui.Alignment
import androidx.compose.ui.Modifier
import androidx.compose.ui.graphics.Color
import androidx.compose.ui.res.painterResource
import androidx.compose.ui.text.input.KeyboardType
import androidx.compose.ui.text.input.PasswordVisualTransformation
import androidx.compose.ui.tooling.preview.Preview
import androidx.compose.ui.unit.dp
import androidx.compose.ui.unit.sp
import androidx.compose.foundation.shape.RoundedCornerShape
import com.example.mylogin.ui.theme.MyloginTheme
class MainActivity : ComponentActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
enableEdgeToEdge()
setContent {
MyloginTheme {
Scaffold(modifier = Modifier.fillMaxSize()) { innerPadding ->
LoginScreen(modifier = Modifier.padding(innerPadding))
}
}
}
}
}
@Composable
fun LoginScreen(modifier: Modifier = Modifier) {
val email = remember { mutableStateOf ("") }
val password = remember { mutableStateOf("") }
Column(
modifier = modifier
.fillMaxSize()
.padding(32.dp),
horizontalAlignment = Alignment.CenterHorizontally,
verticalArrangement = Arrangement.Center
) {
Image(
painter = painterResource(id = R.drawable.loginimage),
contentDescription = "Login Image",
modifier = Modifier
.height(180.dp)
.fillMaxWidth()
)
Spacer(modifier = Modifier.height(24.dp))
Text("Welcome Back!", style = MaterialTheme.typography.headlineMedium, fontSize = 24.sp)
Text("Please login to continue", style = MaterialTheme.typography.bodyLarge)
Spacer(modifier = Modifier.height(40.dp))
OutlinedTextField(
value = email.value,
onValueChange = { email.value = it },
label = { Text("Email Address") },
singleLine = true,
modifier = Modifier
.fillMaxWidth()
.padding(bottom = 16.dp)
)
OutlinedTextField(
value = password.value,
onValueChange = { password.value = it },
label = { Text("Password") },
singleLine = true,
visualTransformation = PasswordVisualTransformation(),
keyboardOptions = KeyboardOptions(keyboardType = KeyboardType.Password),
modifier = Modifier
.fillMaxWidth()
.padding(bottom = 24.dp)
)
Button(
onClick = { /* Handle Login */ },
modifier = Modifier
.fillMaxWidth()
.height(50.dp),
shape = RoundedCornerShape(8.dp),
colors = ButtonDefaults.buttonColors(containerColor = Color(0xFF6200EE))
) {
Text("Login", color = Color.White)
}
Spacer(modifier = Modifier.height(16.dp))
TextButton(onClick = { /* Forgot Password */ }) {
Text("Forgot Password?", style = MaterialTheme.typography.bodyMedium)
}
Spacer(modifier = Modifier.height(16.dp))
Text("Or sign in with", fontSize = 14.sp, color = Color.Gray)
Spacer(modifier = Modifier.height(12.dp))
Row(
horizontalArrangement = Arrangement.Center,
modifier = Modifier.fillMaxWidth()
) {
IconButton(onClick = { /* Facebook Login */ }) {
Image(
painter = painterResource(id = R.drawable.facebook),
contentDescription = "Facebook",
modifier = Modifier.size(40.dp)
)
}
IconButton(onClick = { /* Google Login */ }) {
Image(
painter = painterResource(id = R.drawable.google),
contentDescription = "Google",
modifier = Modifier.size(40.dp)
)
}
IconButton(onClick = { /* GitHub Login */ }) {
Image(
painter = painterResource(id = R.drawable.github),
contentDescription = "GitHub",
modifier = Modifier.size(40.dp)
)
}
}
}
}
@Preview(showBackground = true)
@Composable
fun DefaultPreview() {
MyloginTheme {
LoginScreen()
}
}
Adapun tampilan dari simple login page ini akan seperti ini:
Pada login page ini kita dapat memasukkan email dan password, kemudian kita juga memiliki pilihan untuk melakukan login dengan menggunakan akun facebook, github, ataupun google
Komentar
Posting Komentar