🔧 PRAKTIJK: Android UI Interactie week 2

0.0(0)
studied byStudied by 0 people
0.0(0)
full-widthCall Kai
learnLearn
examPractice Test
spaced repetitionSpaced Repetition
heart puzzleMatch
flashcardsFlashcards
GameKnowt Play
Card Sorting

1/14

encourage image

There's no tags or description

Looks like no tags are added yet.

Study Analytics
Name
Mastery
Learn
Test
Matching
Spaced

No study sessions yet.

15 Terms

1
New cards

Hoe maak je een knop in Jetpack Compose?

Button(
    onClick = { /* actie wanneer geklikt */ },
    enabled = true // optioneel, standaard true
) {
    Text("Klik hier")
}

2
New cards

Hoe beheer je state in een Compose UI?

Gebruik remember en mutableStateOf:

// Importeer deze
import androidx.compose.runtime.getValue
import androidx.compose.runtime.setValue
import androidx.compose.runtime.mutableStateOf
import androidx.compose.runtime.remember

@Composable
fun Counter() {
    var count by remember { mutableStateOf(0) }
    
    Column {
        Text("Count: $count")
        Button(onClick = { count++ }) {
            Text("Increment")
        }
    }
}

3
New cards

Hoe genereer je een random getal in Kotlin?

// Random getal tussen 1 en 6 (inclusief)
val randomNumber = (1..6).random()

// Of met Random klasse
val random = Random.nextInt(1, 7) // 1 t/m 6

4
New cards

Hoe maak je een knop die de UI bijwerkt?

@Composable
fun DiceRoller() {
    var result by remember { mutableStateOf(1) }
    
    Column(
        horizontalAlignment = Alignment.CenterHorizontally
    ) {
        Image(
            painter = painterResource(id = when(result) {
                1 -> R.drawable.dice_1
                2 -> R.drawable.dice_2
                3 -> R.drawable.dice_3
                4 -> R.drawable.dice_4
                5 -> R.drawable.dice_5
                else -> R.drawable.dice_6
            }),
            contentDescription = "Dice with $result"
        )
        
        Button(onClick = { result = (1..6).random() }) {
            Text("Roll")
        }
    }
}

5
New cards

Wat is een Scaffold in Jetpack Compose?

Een Scaffold is een layout component die een basis app-structuur biedt met slots voor topBar, bottomBar, floatingActionButton, etc.:

Scaffold(
    topBar = {
        TopAppBar(title = { Text("My App") })
    },
    bottomBar = {
        BottomAppBar { /* content */ }
    },
    floatingActionButton = {
        FloatingActionButton(onClick = { /* action */ }) {
            Icon(Icons.Default.Add, contentDescription = "Add")
        }
    }
) { innerPadding ->
    // Main content
    Box(modifier = Modifier.padding(innerPadding)) {
        Text("Content goes here")
    }
}

6
New cards

Hoe toon je een afbeelding in Jetpack Compose?

// Voor een resource in de drawable map
Image(
    painter = painterResource(id = R.drawable.my_image),
    contentDescription = "Image description",
    modifier = Modifier.size(200.dp)
)

// Voor een vector icoon
Image(
    imageVector = Icons.Default.Person,
    contentDescription = "Person icon",
    modifier = Modifier.size(48.dp)
)

7
New cards

Wat is een Spacer in Jetpack Compose?

Een Spacer is een lege composable die ruimte inneemt tussen andere elementen:

Column {
    Text("First text")
    Spacer(modifier = Modifier.height(16.dp))
    Text("Second text")
}

Row {
    Text("Left text")
    Spacer(modifier = Modifier.width(16.dp))
    Text("Right text")
}

8
New cards

Wat is een Modifier in Jetpack Compose?

Een Modifier is een object dat wordt gebruikt om de layout, gedrag, uiterlijk of interactiviteit van een composable te wijzigen:

Text(
    text = "Hello World",
    modifier = Modifier
        .padding(16.dp)
        .background(Color.Gray)
        .clickable { /* action */ }
        .fillMaxWidth()
)

9
New cards

Hoe werkt een Column in Jetpack Compose?

Een Column plaatst elementen verticaal onder elkaar:

Column(
    modifier = Modifier.fillMaxSize(),
    verticalArrangement = Arrangement.Center,
    horizontalAlignment = Alignment.CenterHorizontally
) {
    Text("First item")
    Text("Second item")
    Text("Third item")
}

10
New cards

Hoe werkt een Row in Jetpack Compose?

Een Row plaatst elementen horizontaal naast elkaar:

Row(
    modifier = Modifier.fillMaxWidth(),
    horizontalArrangement = Arrangement.SpaceBetween,
    verticalAlignment = Alignment.CenterVertically
) {
    Text("Left")
    Text("Center")
    Text("Right")
}

11
New cards

Hoe werkt een Box in Jetpack Compose?

Een Box stapelt elementen bovenop elkaar, vergelijkbaar met FrameLayout in de traditionele Android View systeem:

Box(
    modifier = Modifier.size(100.dp),
    contentAlignment = Alignment.Center
) {
    // Achtergrond (onderste laag)
    Box(
        modifier = Modifier
            .fillMaxSize()
            .background(Color.Gray)
    )
    
    // Voorgrond (bovenste laag)
    Text("Centered text")
}

12
New cards

Wat is LaunchedEffect in Jetpack Compose?

LaunchedEffect is een composable functie die een coroutine start wanneer het in de compositie komt en annuleert wanneer het de compositie verlaat:

@Composable
fun TimerExample() {
    var seconds by remember { mutableStateOf(0) }
    
    LaunchedEffect(key1 = Unit) {
        while (true) {
            delay(1000)
            seconds++
        }
    }
    
    Text("Seconds elapsed: $seconds")
}

13
New cards

Hoe gebruik je AnimatedVisibility in Jetpack Compose?

AnimatedVisibility is een composable die een animatie toont wanneer de zichtbaarheid van zijn inhoud verandert:

var visible by remember { mutableStateOf(true) }

Column {
    Button(onClick = { visible = !visible }) {
        Text(if (visible) "Hide" else "Show")
    }
    
    AnimatedVisibility(visible = visible) {
        Text("This text will animate in and out")
    }
}

14
New cards

Hoe maak je eenvoudige animaties in Jetpack Compose?

Gebruik animateXxxAsState functies om waarden vloeiend te laten veranderen:

var expanded by remember { mutableStateOf(false) }

val size by animateDpAsState(
    targetValue = if (expanded) 200.dp else 100.dp,
    label = "size"
)

val color by animateColorAsState(
    targetValue = if (expanded) Color.Red else Color.Blue,
    label = "color"
)

Box(
    modifier = Modifier
        .size(size)
        .background(color)
        .clickable { expanded = !expanded }
)

15
New cards

Hoe gebruik je string resources in Jetpack Compose?

Gebruik de stringResource functie:

// In strings.xml
// <string name="greeting">Hello, %1$s!</string>

Text(
    text = stringResource(R.string.greeting, "World")
)

// Of met meerdere parameters
// <string name="welcome">Welcome %1$s, you have %2$d messages</string>

Text(
    text = stringResource(R.string.welcome, userName, messageCount)
)