Replace word: Joey deVilla up to date this tutorial for Android Studio Giraffe, Kotlin 1.9 and Android 14. Alex Sullivan wrote the unique.
We’re at an thrilling level in Android improvement. Based on a survey of the cell improvement ecosystem taken in late 2022 by the Cell Native Basis, half of Android builders are constructing apps with Jetpack Compose. The opposite half are constructing them “the previous means.”
Working programs evolve, and Android — the world’s hottest OS — is not any exception. When a platform the scale of Android makes a change this massive, the primary builders who embrace the change acquire a big benefit. With half the Android builders nonetheless ready to make the leap, the time to study Jetpack Compose is now.
What’s Jetpack Compose?
Launched in July 2021, Jetpack Compose is a UI toolkit that updates the method of constructing Android apps. As an alternative of XML, you utilize Kotlin code to declaratively specify how the UI ought to look and behave in numerous states. You don’t have to fret how the UI strikes amongst these states — Jetpack Compose takes care of that. You’ll discover it acquainted when you’re acquainted with declarative internet frameworks resembling React, Angular or Vue.
The Jetpack Compose strategy is a big departure from Android’s unique XML UI toolkit, now known as Views. Views was modeled after previous desktop UI frameworks and dates to Android’s starting. In Views, you utilize a mechanism resembling findViewById()
or view binding to attach UI parts to code. This crucial strategy is straightforward however requires defining how this system strikes amongst states and the way the UI ought to look and behave in these states.
Jetpack Compose is constructed with Kotlin, and it takes benefit of the options and design philosophy of Kotlin language. It’s designed to be used in purposes written in Kotlin. With Jetpack Compose, you now not should context-switch to XML when designing your app’s UI; you do the whole lot in Kotlin.
On this tutorial, you’ll construct two Jetpack Compose apps:
- A easy take a look at run app, which you’ll construct from scratch, beginning with File → New.
- A extra advanced cookbook app that can show an inventory of recipe playing cards containing pictures and textual content. You’ll construct this utilizing a starter challenge.
Your First Jetpack Compose App
Make sure you’re working the newest steady model of Android Studio. Each apps on this tutorial — the easy app you’re about to construct and the cookbook app you’ll construct afterward — had been constructed utilizing the Flamingo model of Android Studio. Recently, Google has been upgrading Android Studio at a livid tempo, and the code beneath won’t work on earlier variations.
Word: “Test for Updates” is your good friend! On the macOS model of Android Studio, you’ll discover it beneath the Android Studio menu. For those who’re a Home windows- or Linux-based Android Studio consumer, you’ll discover it beneath the Assist menu.
When you’ve confirmed your Android Studio is updated, launch it and choose File → New → New Challenge…. Relying on the way you final resized the New Challenge window, you’ll both see one thing like this:
or this:
Both means, you’ll see the first template within the record is for an Empty Exercise challenge with the Jetpack Compose icon:
On the earth of programming, the place it’s important to state issues explicitly so a compiler can perceive them, that is thought of a refined trace. You must infer that Jetpack Compose is predicted to be the popular means for constructing Android UIs going ahead, and the earlier you study it, the higher.
Choose the Jetpack Compose Empty Exercise template and click on Subsequent. Within the following New Challenge window, identify the challenge My First Compose App and click on the End button.
Whats up, Android!
As soon as Android Studio completed constructing the challenge, run the app. You must see one thing like this:
To see what’s behind this significantly unexciting display, open MainActivity.kt. It nonetheless comprises a MainActivity
class and an onCreate()
technique, and onCreate()
nonetheless calls on its counterpart in MainActivity
’s superclass, ComponentActivity
.
What’s completely different is the remainder of the code in onCreate()
. When constructing Android UIs the previous means — which is named Views — onCreate()
calls the setContentView()
technique and passes it the ID of the view’s XML file, which Android makes use of to render the onscreen parts. In Jetpack Compose, onCreate()
calls a technique named setContent()
, and within the default challenge, it appears like this:
setContent {
MyFirstComposeAppTheme {
// A floor container utilizing the 'background' shade from the theme
Floor(
modifier = Modifier.fillMaxSize(),
shade = MaterialTheme.colorScheme.background
) {
Greeting("Android")
}
}
}
setContent()
takes a lambda as its parameter, and close to the top of that lambda is a name to a technique known as Greeting()
. You’ll discover its definition instantly after the MainActivity
class:
@Composable
enjoyable Greeting(identify: String, modifier: Modifier = Modifier) {
Textual content(
textual content = "Whats up $identify!",
modifier = modifier
)
}
As you see, Greeting()
is the strategy that determines what seems onscreen whenever you run the app. You must also discover the next parts of this technique:
-
It’s annotated with
@Composable
. This informs the compiler thatGreeting()
is a composable perform (or composable for brief), which suggests it receives knowledge and generates a UI aspect in response. One motive to make it clear {that a} perform is composable is that composable features can solely be known as by different composable features.setContent()
which callsGreeting()
is a composable. - It has parameters. As a perform, it has parameters (or, when you desire, it takes arguments). That makes composables versatile, permitting you to move state to them. For those who’re aware of programming in React, composable parameters are Jetpack Compose’s model of props.
-
It’s a
Unit
perform. It has no return worth. As an alternative, it causes a consumer interface aspect to be drawn onscreen. Practical programming language purists would name this a facet impact; we Jetpack Composers desire to say that composables emit UI parts. - Its identify is a CapitalizedNoun. The conference is that composable perform names are nouns capitalized in PascalCase. It helps distinguish composables from abnormal features and strategies, the place the conference is to make their names verbs that use camelCase capitalization.
-
It comprises a name to a technique known as
Textual content()
.Textual content()
is one in every of Jetpack Compose’s built-in composables, and given a string, it emits a textual content view containing that string.