Tugas 5 PPB Membuat Login Page
Nama : Halyusa Ard Wahyudi
NRP : 5025201088
Kelas : PPB-F
Tugas kali ini adalah membuat simple login page dengan menggunakan Jetpack Compose.
Berikut adalah tampilan halaman login dan source code-nya:
MyLogin Page
package com.example.mylogin import android.os.Bundle import android.widget.Space import androidx.activity.ComponentActivity import androidx.activity.compose.setContent import androidx.compose.foundation.Image import androidx.compose.foundation.clickable import androidx.compose.foundation.layout.Arrangement import androidx.compose.foundation.layout.Column import androidx.compose.foundation.layout.Row import androidx.compose.foundation.layout.Spacer import androidx.compose.foundation.layout.fillMaxSize import androidx.compose.foundation.layout.fillMaxWidth import androidx.compose.foundation.layout.height import androidx.compose.foundation.layout.padding import androidx.compose.foundation.layout.size import androidx.compose.material3.Button import androidx.compose.material3.MaterialTheme import androidx.compose.material3.OutlinedTextField import androidx.compose.material3.Surface import androidx.compose.material3.Text import androidx.compose.runtime.Composable import androidx.compose.ui.Alignment import androidx.compose.ui.Modifier 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.mylogin.ui.theme.MyLoginTheme class MainActivity : ComponentActivity() { override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) setContent { MyLoginTheme { Surface(color = androidx.compose.ui.graphics.Color.White){ LoginScreen() } } } } } @Composable fun LoginScreen(){ Column( modifier = Modifier.fillMaxSize(), verticalArrangement = Arrangement.Center, horizontalAlignment = Alignment.CenterHorizontally ){ Image( painter = painterResource(id = R.drawable.login), contentDescription = "Login image", modifier = Modifier.size(200.dp)) Spacer(modifier = Modifier.height(16.dp)) Text( text = "Welcome Back!", fontSize = 28.sp, fontWeight = FontWeight.Bold) Spacer(modifier = Modifier.height(32.dp)) Text(text = "Login to your account") Spacer(modifier = Modifier.height(4.dp)) OutlinedTextField( value = "", onValueChange = {}, label = { Text(text = "Email address") }) OutlinedTextField( value = "", onValueChange = {}, label = { Text(text = "Password") }) Spacer(modifier = Modifier.height(16.dp)) Button(onClick = { /*TODO*/ }) { Text(text = "Login") } Spacer(modifier = Modifier.height(32.dp)) Text( text = "Forgot Password?", modifier = Modifier.clickable { }) Spacer(modifier = Modifier.height(32.dp)) Text(text = "Or sign in with") Row ( modifier = Modifier .fillMaxWidth() .padding(40.dp), horizontalArrangement = Arrangement.SpaceEvenly ){ Image( painter = painterResource(id = R.drawable.xx), contentDescription = "X", modifier = Modifier .size(60.dp) .clickable { } ) Image( painter = painterResource(id = R.drawable.googs), contentDescription = "google", modifier = Modifier .size(60.dp) .clickable { } ) Image( painter = painterResource(id = R.drawable.linkin), contentDescription = "linkedin", modifier = Modifier .size(60.dp) .clickable { } ) } } } @Preview @Composable fun LoginScreenPreview(){ MyLoginTheme { LoginScreen() } }
Comments
Post a Comment