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

Postingan populer dari blog ini

Tugas 1 PPB A

Tugas pertemuan 3

Tugas 4 (basic-android-kotlin-compose-training-dice-roller)