Pocket Studio Academy
HomePart 3
Part 3

Jetpack Compose

Composables, state and recomposition, modifiers, layouts, lists, Material 3 theming, images and animation. By the end you can build any single screen you can picture.

3.1

The old way vs the Compose way

Android has had two completely different ways of putting things on a screen. Seeing what the old one felt like is the fastest way to understand why the new one is shaped the way it is.

8 min
3.2

Your first composable

A composable is an ordinary Kotlin function wearing one extra label. Write one, call it from your Activity, and it appears on the phone. Then give it parameters and it becomes a piece you can reuse anywhere.

10 min
3.3

Modifiers — the decorator chain

Size, padding, background, corners, borders and taps all come from one place in Compose: the modifier chain. Learn how the chain is read, why the order of it changes what you see, and the one convention every reusable composable follows.

11 min
3.4

Column, Row and Box

Three containers arrange everything in Compose: down, across, and on top of each other. Learn how they space and align their children, what weight really does, and why two composables side by side overlap until you put them in one.

11 min
3.5

State and remember

A counter that refuses to count is the rite of passage of every Compose beginner. Learn exactly why a plain var fails, what mutableStateOf and remember each fix, how the by delegate works, and which one survives turning the phone sideways.

12 min
3.6

Recomposition, explained properly

What actually happens between your tap and the new number on screen. Which functions Compose re-runs, which it skips, and the four things you must never do inside a composable body — with the real place to put them instead.

11 min
3.7

Text and typography

Every parameter of the Text composable that matters, why text sizes use sp and never dp, how the Material 3 type scale keeps a whole app consistent, and how to style one word inside a sentence.

9 min
3.8

Buttons and click handling

How a Button takes two lambdas rather than one, why onClick = roll() is the classic beginner error, the five Material 3 button styles and when to use each, and how to make absolutely anything tappable.

10 min
3.9

Text fields and user input

Why a Compose text field holds no text of its own, the two-parameter pattern that makes typing work, and how to add labels, validation, number keyboards and input filtering without fighting the framework.

11 min
3.10

Lists with LazyColumn

A Column with a thousand rows builds a thousand rows, even though eight of them fit on the screen. LazyColumn builds only what you can see — and this lesson covers the keys, padding and spacing that separate a list that works from a list that feels right.

12 min
3.11

Material 3 theming and colour

Stop writing Color(0xFF5B3FD6) in forty places. Material 3 asks you for a colour per role instead of per widget, which is what makes one edit repaint a whole app — and what makes a dark mode that is genuinely designed rather than inverted.

12 min
3.12

Images, icons and shapes

Icon, Image and Canvas are three different answers to "put a picture here", and picking the wrong one is why some apps are 40 MB. Plus the shapes that clip everything, and the one parameter that decides whether a screen reader can use your app.

10 min
3.13

Animation basics

You never write "move from here to there over 300 milliseconds". You say what the target is, and Compose takes time to get there. Build Dice Duel's real roll animation and learn why it spins forwards forever without ever rewinding.

11 min