PPB: TUGAS 2
Nama : Shazia Ingeyla Naveeda
NRP : 5025211203
Kelas : PPB (A)
Membuat Aplikasi Hello Android
MainActivity
class MainActivity : ComponentActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContent {
BasicsCodelabTheme {
MyApp(modifier = Modifier.fillMaxSize())
}
}
}
}
Ini adalah entry point aplikasi Android. setContent digunakan untuk menampilkan UI dengan Jetpack Compose. BasicsCodelabTheme adalah tema kustom. Memanggil MyApp() sebagai composable utama.
MyApp()
@Composable
fun MyApp(modifier: Modifier = Modifier) {
var shouldShowOnboarding by rememberSaveable { mutableStateOf(true) }
Surface(modifier) {
if (shouldShowOnboarding) {
OnboardingScreen(onContinueClicked = { shouldShowOnboarding = false })
} else {
Greetings()
}
}
}
Menentukan logika navigasi antara onboarding screen dan daftar greetings. Menggunakan rememberSaveable agar status bertahan saat rotasi layar. Surface digunakan sebagai wadah UI dengan styling tema.
OnboardingScreen()
@Composable
fun OnboardingScreen(
onContinueClicked: () -> Unit,
modifier: Modifier = Modifier
)
Menampilkan layar sambutan awal dengan teks dan tombol "Continue". Saat tombol ditekan, onContinueClicked di-trigger, yang akan menyembunyikan onboarding.
Greetings()
@Composable
private fun Greetings(
modifier: Modifier = Modifier,
names: List<String> = List(1000) { "$it" }
)
Menampilkan daftar 1000 nama (0 hingga 999) dengan LazyColumn (versi Compose dari RecyclerView). Setiap item ditampilkan menggunakan Greeting(name).
Greeting() & CardContent()
@Composable
private fun Greeting(name: String, modifier: Modifier = Modifier)
@Composable
private fun CardContent(name: String)
Greeting() membungkus setiap item dalam sebuah Card.
CardContent() menampilkan:
- Teks “Hello,” dan nama.
- Tombol expand/collapse dengan animasi menggunakan animateContentSize.
- Paragraf teks dummy ditampilkan saat expanded = true.
- Ikon ExpandMore atau ExpandLess tergantung pada status ekspansi.
Preview Functions
@Preview(showBackground = true, widthDp = 320, heightDp = 320)
@Composable
fun OnboardingPreview()
@Composable
fun GreetingPreview()
@Composable
fun MyAppPreview()
Untuk menampilkan preview UI di Android Studio. Berguna saat mendesain UI tanpa harus menjalankan aplikasi.
stringResource()
stringResource(R.string.show_more)
Mengambil string dari res/values/strings.xml, digunakan untuk deskripsi ikon agar mendukung i18n dan aksesibilitas.
Comments
Post a Comment