Jetpack Compose

Nabhyla Niagara Rannuan, 5025221286

Membuat Project Compose Baru

Untuk memulai project Compose baru, buka Android Studio.

Jika baru memulai di jendela Welcome to Android Studio, klik Start a new Android Studio project. Jika sudah membuka project Android Studio, pilih File > New > New Project dari panel menu.

Untuk project baru, pilih Empty Activity dari template yang tersedia.


Modifikasi Tampilan

Source : https://developer.android.com/codelabs/jetpack-compose-basics?hl=id#0

Kode Lengkap

package com.example.myapplication

import android.os.Bundle
import androidx.activity.ComponentActivity
import androidx.activity.compose.setContent
import androidx.compose.animation.animateContentSize
import androidx.compose.animation.core.Spring
import androidx.compose.animation.core.spring
import androidx.compose.foundation.layout.*
import androidx.compose.foundation.lazy.LazyColumn
import androidx.compose.foundation.lazy.items
import androidx.compose.material3.*
import androidx.compose.runtime.*
import androidx.compose.ui.Alignment
import androidx.compose.ui.Modifier
import androidx.compose.ui.graphics.Color
import androidx.compose.ui.text.font.FontWeight
import androidx.compose.ui.unit.dp
import androidx.compose.ui.unit.sp
import com.example.myapplication.ui.theme.MyApplicationTheme
import androidx.compose.runtime.saveable.rememberSaveable
import androidx.compose.material.icons.filled.ExpandLess
import androidx.compose.material.icons.filled.ExpandMore
import androidx.compose.material.icons.Icons

class MainActivity : ComponentActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContent {
MyApplicationTheme {
MyApp()
}
}
}

@Composable
fun MyApp() {
var showOnboarding by rememberSaveable { mutableStateOf(true) }
Surface(modifier = Modifier.fillMaxSize(), color = Color.White) {
if (showOnboarding) {
OnboardingScreen(onContinueClicked = { showOnboarding = false })
} else {
Greetings()
}
}
}

@Composable
fun OnboardingScreen(onContinueClicked: () -> Unit) {
Column(
modifier = Modifier.fillMaxSize(),
verticalArrangement = Arrangement.Center,
horizontalAlignment = Alignment.CenterHorizontally
) {
Text("Welcome!", style = MaterialTheme.typography.headlineMedium.copy(fontSize = 32.sp))
Button(
modifier = Modifier.padding(vertical = 5.dp),
onClick = onContinueClicked
) {
Text("Continue")
}
}
}

@Composable
fun Greetings(names: List<String> = List(1000) { "User $it" }) {
LazyColumn(modifier = Modifier.padding(top = 16.dp)) {
items(names) { name ->
Greeting(name)
}
}
}

@Composable
fun Greeting(name: String) {
var expanded by rememberSaveable { mutableStateOf(false) }
Card(
colors = CardDefaults.cardColors(containerColor = MaterialTheme.colorScheme.primary),
modifier = Modifier.padding(vertical = 4.dp, horizontal = 8.dp)
) {
Row(
modifier = Modifier
.padding(12.dp)
.animateContentSize(
animationSpec = spring(
dampingRatio = Spring.DampingRatioMediumBouncy,
stiffness = Spring.StiffnessLow
)
),
verticalAlignment = Alignment.CenterVertically
) {
Column(modifier = Modifier.weight(1f)) {
Text("Hi,", style = MaterialTheme.typography.titleLarge, color = Color.White)
Text(
text = name,
style = MaterialTheme.typography.headlineMedium.copy(
fontWeight = FontWeight.ExtraBold, color = Color.White
)
)
if (expanded) {
Text(
text = "This is some additional information about $name.",
color = Color.White,
fontSize = 16.sp
)
}
}
IconButton(onClick = { expanded = !expanded }) {
Icon(
imageVector = if (expanded) Icons.Filled.ExpandLess else Icons.Filled.ExpandMore,
contentDescription = if (expanded) "Show less" else "Show more",
tint = Color.White
)
}
}
}
}}

Hasil 


Link Github
https://github.com/nabhylanr/Jetpack-Compose.git

Video


Komentar

Postingan populer dari blog ini

ChefJuna