PPB I - ETS
Nama : Rachel Anggieuli AP
NRP : 5025201263
Tahun : 2023/2024
Kelas : PPB I
ETS
Soal ETS:
- Gambarkan dan jelaskan siklus aktivitas dari aplikasi Android ?
- Penggunaan aplikasi Android yang sesuai di bidang apa saja ? Jelaskan dan berikan contohnya.
- Bukalah aplikasi Mobile yang berkaitan dengan sistem Tiket yang anda punya. Tuliskan dan jelaskan kegunaan fitur yang sering anda pakai.
- Redesign dari aplikasi sesuai dengan fitur yang sering dipakai
- Implementasikan dalam bentuk aplikasi Android termasuk halaman masuk dan akses fitur yang sering dipakai.
- Dokumentasikan dan Demokan dalam Video Youtube dari aplikasi yang telah dibangun.
Jawaban Essay terdapat di Docs
Link DOCS: https://docs.google.com/document/d/1iLmFNNT7P_zzq4eV2KuwcIWdeQbDXc2Vs-a3tXFg0bs/edit?usp=sharing
Demo Aplikasi
Link Youtube: https://youtube.com/shorts/mV-wSTA9veE?feature=share
MainActivity.kt package com.example.trainets import android.os.Bundle import androidx.activity.ComponentActivity import androidx.activity.compose.setContent import androidx.compose.foundation.layout.Column import androidx.compose.foundation.layout.fillMaxSize import androidx.compose.material3.MaterialTheme import androidx.compose.material3.Surface import androidx.compose.material3.Text import androidx.compose.runtime.Composable import androidx.compose.ui.Modifier import androidx.compose.ui.graphics.Color import androidx.compose.ui.text.font.FontWeight import androidx.compose.ui.tooling.preview.Preview import androidx.compose.ui.unit.sp import com.example.trainets.ui.theme.TrainETSTheme class MainActivity : ComponentActivity() { override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) setContent { LoginActivity() } } }Source Code Aplikasi
LoginActivity.kt package com.example.trainets import android.util.Log 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.ButtonDefaults import androidx.compose.material3.OutlinedTextField import androidx.compose.material3.Text import androidx.compose.runtime.Composable import androidx.compose.runtime.* import androidx.compose.runtime.mutableStateOf import androidx.compose.runtime.remember 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.font.FontWeight 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 @Composable fun LoginActivity() { var email by remember { mutableStateOf("") } var password by remember { mutableStateOf("") } Column( modifier = Modifier.fillMaxSize(), verticalArrangement = Arrangement.Center, horizontalAlignment = Alignment.CenterHorizontally ) { Image(painter = painterResource(id = R.drawable.train_1), contentDescription = "Login Image", modifier = Modifier.size(200.dp)) Text(text = "Welcome Back", fontSize = 28.sp, fontWeight = FontWeight.Bold) Spacer(modifier = Modifier.height(4.dp)) Text(text = "Login to your account") Spacer(modifier = Modifier.height(16.dp)) OutlinedTextField(value = email , onValueChange = { email = it }, label = { Text(text = "Email address") }) Spacer(modifier = Modifier.height(16.dp)) OutlinedTextField(value = password , onValueChange = { password = it }, label = { Text(text = "Password") }, visualTransformation = PasswordVisualTransformation()) Spacer(modifier = Modifier.height(16.dp)) Button(onClick = { Log.i("Credential", "Email : $email Password : $password") }, colors = ButtonDefaults.buttonColors(containerColor = Color.Blue) ) { 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(30.dp), horizontalArrangement = Arrangement.SpaceEvenly ){ Image(painter = painterResource(id = R.drawable.google), contentDescription = "Google", modifier = Modifier .size(50.dp) .clickable { }) Image(painter = painterResource(id = R.drawable.fb), contentDescription = "Facebook", modifier = Modifier .size(50.dp) .clickable { }) Image(painter = painterResource(id = R.drawable.twitter), contentDescription = "X", modifier = Modifier .size(50.dp) .clickable { }) } } } @Preview(showBackground = true, showSystemUi = true, name = "My Preview" ) @Composable fun LoginActivityPreview(){ LoginActivity() }
Comments
Post a Comment