Questo codelab fa parte del corso Android Kotlin Fundamentals. Per ottenere il massimo valore da questo corso, ti consigliamo di seguire le codelab in sequenza. Tutti i codelab del corso sono elencati nella pagina di destinazione dei codelab Android Kotlin Fundamentals.
Introduzione
Finora hai configurato tutto e Android Studio ha creato molto codice per te. Prima di modificare tutto il codice, è importante sapere cosa hai appena creato e come navigare nei file sorgente di un'app per Android.
In questo codelab, scoprirai di più sui componenti principali di un'app per Android e aggiungerai una semplice interattività a un'app con un pulsante.
Cosa devi già sapere
- Come installare e aprire Android Studio.
- Come creare un nuovo progetto di app.
- Come eseguire un'app su un emulatore o un dispositivo fisico.
Cosa imparerai a fare
- Come modificare il file di layout dell'app.
- Come creare un'app con un comportamento interattivo.
- Molta terminologia nuova. Consulta il glossario del vocabolario per spiegazioni semplici di termini e concetti.
Cosa farai
- Esplora il file Kotlin
MainActivity
e il file di layout dell'attività. - Modifica il layout dell'attività in XML.
- Aggiungi un elemento
Button
al layout dell'attività. - Estrai le stringhe codificate in un file di risorse stringa.
- Implementa i metodi di gestione dei clic per visualizzare i messaggi sullo schermo quando l'utente tocca un
Button
.
In questo codelab, crei un nuovo progetto di app chiamato DiceRoller e aggiungi un'interattività di base con un pulsante. Ogni volta che si fa clic sul pulsante, il valore del testo visualizzato cambia. L'app DiceRoller finale per questo codelab ha il seguente aspetto:
Nell'ultimo codelab, hai scoperto le parti principali di un progetto di app, tra cui le directory java
e res
. In questa attività, ti concentrerai sui due file più importanti che compongono la tua app: il file Kotlin MainActivity
e il file di layout activity_main.xml
.
Passaggio 1: esamina MainActivity
MainActivity
è un esempio di Activity
. Un Activity
è una classe Android di base che disegna l'interfaccia utente (UI) di un'app Android e riceve eventi di input. Quando l'app viene avviata, viene avviata l'attività specificata nel file AndroidManifest.xml
.
Molti linguaggi di programmazione definiscono un metodo principale che avvia il programma. Le app per Android non hanno un metodo principale. Il file AndroidManifest.xml
indica invece che MainActivity
deve essere avviato quando l'utente tocca l'icona di avvio dell'app. Per avviare un'attività, il sistema operativo Android utilizza le informazioni nel manifest per configurare l'ambiente per l'app e creare l'MainActivity
. Poi, il MainActivity
esegue a sua volta alcune operazioni di configurazione.
Ogni attività ha un file di layout associato. L'attività e il layout sono collegati da un processo noto come espansione del layout. Quando l'attività inizia, le visualizzazioni definite nei file di layout XML vengono trasformate (o "gonfiate") in oggetti di visualizzazione Kotlin in memoria. A questo punto, l'attività può disegnare questi oggetti sullo schermo e modificarli in modo dinamico.
- In Android Studio, seleziona File > New > New Project per creare un nuovo progetto. Utilizza l'attività Vuota e fai clic su Avanti.
- Chiama il progetto DiceRoller e verifica tutti gli altri valori per la posizione del progetto. Assicurati che l'opzione "Usa artefatti AndroidX" sia selezionata. Fai clic su Fine.
- Nel riquadro Project > Android, espandi java > com.example.android.diceroller. Fai doppio clic su MainActivity. L'editor di codice mostra il codice in
MainActivity
. - Sotto il nome del pacchetto e le istruzioni di importazione si trova la dichiarazione di classe per
MainActivity
. La classeMainActivity
estendeAppCompatActivity
.
class MainActivity : AppCompatActivity() { ...
- Nota il metodo
onCreate()
. Le attività non utilizzano un costruttore per inizializzare l'oggetto. Viene invece chiamata una serie di metodi predefiniti (chiamati "metodi del ciclo di vita") nell'ambito della configurazione dell'attività. Uno di questi metodi del ciclo di vita èonCreate()
, che esegui sempre l'override nella tua app. Scoprirai di più sui metodi del ciclo di vita in un codelab successivo.
InonCreate()
, specifichi il layout associato all'attività e lo aumenti. Il metodosetContentView()
esegue entrambe le operazioni.
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)
}
Il metodo setContentView()
fa riferimento al layout utilizzando R.layout.activity_main
, che è in realtà un riferimento intero. La classe R
viene generata quando crei l'app. La classe R
include tutti gli asset dell'app, inclusi i contenuti della directory res
.
In questo caso, R.layout.activity_main
si riferisce alla classe R
generata, alla cartella layout
e al file di layout activity_main.xml
. Le risorse non includono le estensioni dei file. Farai riferimento a molte delle risorse dell'app (incluse immagini, stringhe ed elementi all'interno del file di layout) utilizzando riferimenti simili nella classe R
.
Passaggio 2: esamina ed esplora il file di layout dell'app
Tutte le attività nella tua app hanno un file di layout associato nella directory res/layout
dell'app. Un file di layout è un file XML che esprime l'aspetto effettivo di un'attività. Un file di layout lo fa definendo le visualizzazioni e dove vengono visualizzate sullo schermo.
Le visualizzazioni sono elementi come testo, immagini e pulsanti che estendono la classe View
. Esistono molti tipi di visualizzazioni, tra cui TextView
, Button
, ImageView
e CheckBox
.
In questa attività, esaminerai e modificherai il file di layout dell'app.
- Nel riquadro Progetto > Android, espandi res > layout e fai doppio clic su activity_main.xml. Si apre l'editor di progettazione del layout. Android Studio include questo editor, che ti consente di creare il layout dell'app in modo visivo e di visualizzarne l'anteprima. Scopri di più sull'editor di progettazione in un codelab successivo.
- Per visualizzare il file di layout come XML, fai clic sulla scheda Testo nella parte inferiore della finestra.
- Elimina tutto il codice XML esistente nell'editor di layout. Il layout predefinito che ottieni con un nuovo progetto è un buon punto di partenza se lavori con l'editor di progettazione di Android Studio. In questa lezione lavorerai con il codice XML sottostante per creare un nuovo layout da zero.
- Copia e incolla questo codice nel layout:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="wrap_content"
tools:context=".MainActivity" >
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Hello World!" />
</LinearLayout>
Ora esamina il codice:
- L'elemento principale o di primo livello del layout è un elemento
<LinearLayout>
. La visualizzazioneLinearLayout
è unViewGroup
. Le visualizzazioni sono contenitori che contengono altre visualizzazioni e aiutano a specificare le posizioni delle visualizzazioni sullo schermo.
Tutte le visualizzazioni e i gruppi di visualizzazioni che aggiungi al layout sono organizzati in una gerarchia di visualizzazioni, con l'elemento XML più in alto come radice della gerarchia. La visualizzazione principale può contenere altre visualizzazioni e gruppi di visualizzazioni, mentre i gruppi di visualizzazioni contenuti possono contenere altre visualizzazioni e gruppi di visualizzazioni. Quando la tua app esegue la gerarchia di visualizzazione nel file di layout XML, questa diventa una gerarchia di oggetti quando il layout viene espanso. In questo caso, il gruppo di visualizzazione principale è un layout lineare, che organizza le visualizzazioni secondarie in modo lineare, una dopo l'altra (in verticale o in orizzontale).
La radice predefinita che ottieni per un nuovo progetto Android è unConstraintLayout
, che funziona bene in coordinamento con l'editor di progettazione. Per questa app, utilizzi un gruppo di visualizzazioneLinearLayout
, che è più semplice del layout vincolato. Nella prossima lezione imparerai molto di più sui gruppi di visualizzazione e sul layout vincolato. - All'interno del tag
LinearLayout
, nota l'attributoandroid:layout_width
. La larghezza di questoLinearLayout
è impostata sumatch parent
, il che la rende uguale a quella del contenitore principale. Poiché si tratta della visualizzazione principale, il layout si espande all'intera larghezza dello schermo. - Nota l'attributo
android:layout_height
, impostato suwrap_content
. Questo attributo fa sì che l'altezza diLinearLayout
corrisponda all'altezza combinata di tutte le viste che contiene, che per ora è soloTextView
. - Esamina l'elemento
<TextView>
. QuestoTextView
, che mostra il testo, è l'unico elemento visivo nell'app DiceRoller. L'attributoandroid:text
contiene la stringa effettiva da visualizzare, in questo caso la stringa"Hello World!"
- Nota gli attributi
android:layout_width
eandroid:layout_height
nell'elemento<TextView>
, entrambi impostati suwrap_content
. Il contenuto della visualizzazione di testo è il testo stesso, quindi la visualizzazione occuperà solo lo spazio necessario per il testo.
L'app per tirare i dadi non è molto utile se l'utente non può tirare i dadi e vedere il risultato. Per iniziare, aggiungi un pulsante al layout per lanciare i dadi e aggiungi un testo che mostri il valore dei dadi tirati dall'utente.
Passaggio 1: aggiungi un pulsante al layout
- Aggiungi un elemento
Button
al layout sotto la visualizzazione del testo inserendo <Button e poi premi Invio. Viene visualizzato un bloccoButton
che termina con/>
e include gli attributilayout_width
elayout_height
.
<Button
android:layout_width=""
android:layout_height="" />
- Imposta gli attributi
layout_width
elayout_height
su"wrap_content"
. Con questi valori, il pulsante ha la stessa larghezza e altezza dell'etichetta di testo che contiene. - Aggiungi un attributo
android:text
al pulsante e assegnagli il valore "Roll". L'elemento Pulsante ora ha il seguente aspetto:
<Button
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Roll" />
Per le visualizzazioni Button
, l'attributo text
è l'etichetta del pulsante. Nell'editor di layout, l'attributo è evidenziato in giallo, il che indica un suggerimento o un avviso. In questo caso, l'evidenziazione gialla è dovuta al fatto che la stringa "Roll"
è hardcoded nell'etichetta del pulsante, ma la stringa dovrebbe essere una risorsa. Scopri di più sulle risorse stringa nella sezione successiva.
Passaggio 2: estrai le risorse stringa
Anziché codificare le stringhe nei file di layout o di codice, è consigliabile inserire tutte le stringhe dell'app in un file separato. Questo file si chiama strings.xml
e si trova tra le risorse dell'app, nella directory res/values/
.
Avere le stringhe in un file separato ne semplifica la gestione, soprattutto se le utilizzi più di una volta. Inoltre, le risorse di tipo stringa sono obbligatorie per tradurre e localizzare l'app, perché devi creare un file di risorse di tipo stringa per ogni lingua.
Android Studio ti aiuta a ricordare di inserire le stringhe in un file di risorse con suggerimenti e avvisi.
- Fai clic una volta sulla stringa "Roll" nell'attributo
android:text
del tag<Button>
. - Premi
Alt+Enter
(Option+Enter
su macOS) e seleziona Estrai risorsa stringa dal menu popup. - Inserisci
roll_label
in Nome risorsa. - Fai clic su OK. Nel file
res/values/string.xml
viene creata una risorsa stringa e la stringa nell'elemento Pulsante viene sostituita con un riferimento a questa risorsa:android:text="@string/roll_label"
- Nel riquadro Project > Android, espandi res > values, quindi fai doppio clic su strings.xml per visualizzare le risorse di tipo stringa nel file
strings.xml
:
<resources>
<string name="app_name">DiceRoller</string>
<string name="roll_label">Roll</string>
</resources>
Passaggio 3: applica uno stile e posiziona le visualizzazioni
Il layout ora contiene una visualizzazione TextView
e una Button
. In questa attività, disponi le visualizzazioni all'interno del gruppo di visualizzazioni in modo che risultino più attraenti.
- Fai clic sulla scheda Design per visualizzare un'anteprima del layout. Al momento, entrambe le visualizzazioni sono una accanto all'altra e spostate nella parte superiore dello schermo.
- Fai clic sulla scheda Testo per tornare all'editor XML. Aggiungi l'attributo
android:orientation
al tagLinearLayout
e assegnagli il valore"vertical"
. L'elemento<LinearLayout>
ora dovrebbe avere il seguente aspetto:
<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical"
tools:context=".MainActivity">
Il gruppo di visualizzazioni LinearLayout
posiziona le visualizzazioni che contiene una dopo l'altra in una riga, orizzontalmente o verticalmente. Orizzontale è l'impostazione predefinita. Poiché vuoi che TextView
sia impilato sopra Button
, imposta l'orientamento verticale. Il design ora è simile a questo, con il pulsante sotto il testo:
- Aggiungi l'attributo
android:layout_gravity
sia aTextView
sia aButton
e assegnagli il valore"center_horizontal"
. In questo modo, entrambe le visualizzazioni vengono allineate al centro dell'asse orizzontale. Ora gli elementi TextView e Button dovrebbero avere il seguente aspetto:
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center_horizontal"
android:text="Hello World!" />
<Button
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center_horizontal"
android:text="@string/roll_label" />
- Aggiungi l'attributo
android:layout_gravity
al layout lineare e assegnagli il valore"center_vertical"
. L'elementoLinearLayout
ora dovrebbe avere il seguente aspetto:
<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical"
android:layout_gravity="center_vertical"
tools:context=".MainActivity">
- Per aumentare le dimensioni del testo nella visualizzazione di testo, aggiungi l'attributo
android:textSize
all'elemento<TextView>
con il valore"30sp"
. L'abbreviazione sp sta per pixel scalabili, una misura per dimensionare il testo indipendentemente dalla qualità del display del dispositivo. L'elemento TextView ora dovrebbe avere il seguente aspetto:
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center_horizontal"
android:textSize="30sp"
android:text="Hello World!" />
- Compila ed esegui l'app.
Ora sia il testo che il pulsante sono posizionati correttamente e il testo nella visualizzazione del testo è più grande. Il pulsante non ha ancora alcuna funzionalità, quindi non succede nulla quando lo tocchi. Lavorerai su questo passaggio successivo.
Passaggio 4: ottieni un riferimento al pulsante nel codice
Il codice Kotlin in MainActivity
è responsabile della definizione delle parti interattive della tua app, ad esempio cosa succede quando tocchi un pulsante. Per scrivere una funzione che viene eseguita quando viene fatto clic sul pulsante, devi ottenere un riferimento all'oggetto Button nel layout sottoposto a inflating in MainActivity. Per ottenere un riferimento al pulsante:
- Assegna un ID al
Button
nel file XML. - Utilizza il metodo
findViewById()
nel codice per ottenere un riferimento aView
con un ID specifico.
Una volta ottenuto un riferimento alla visualizzazione Button
, puoi chiamare i metodi su questa visualizzazione per modificarla dinamicamente durante l'esecuzione dell'app. Ad esempio, puoi aggiungere un gestore di clic che esegue il codice quando viene toccato il pulsante.
- Apri il file di layout
activity_main.xml
, se non è già aperto, e fai clic sulla scheda Testo. - Aggiungi l'attributo
android:id
al pulsante e assegnagli un nome (in questo caso, "@+id/roll_button"
). L'elemento<Button>
ora ha questo aspetto:
<Button
android:id="@+id/roll_button"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center_horizontal"
android:text="@string/roll_label" />
Quando crei un ID per una visualizzazione nel file di layout XML, Android Studio crea una costante intera con il nome dell'ID nella classe R
generata. Quindi, se assegni a una visualizzazione il nome roll_button
, Android Studio genera e crea una costante intera denominata roll_button
nella classe R
. Il prefisso "@+id"
per il nome dell'ID indica al compilatore di aggiungere la costante ID alla classe R. Tutti gli ID vista nel file XML devono avere questo prefisso.
- Apri il file Kotlin
MainActivity
. All'interno dionCreate()
, doposetContentView()
, aggiungi questa riga:
val rollButton: Button = findViewById(R.id.roll_button)
Utilizza il metodo findViewById()
per ottenere un riferimento View
per la visualizzazione definita nella classe XML. In questo caso, ottieni il riferimento Button
dalla classe R
e l'ID roll_button
e assegni questo riferimento alla variabile rollButton
.
- Nota che Android Studio evidenzia la classe
Button
in rosso e la sottolinea per indicare che si tratta di un riferimento non risolto e che devi importare questa classe prima di poterla utilizzare. Potrebbe essere visualizzata anche una descrizione comando che indica il nome della classe completo: - Premi
Alt+Enter
(Option+Enter
su Mac) per accettare il nome della classe completo.
Passaggio 5: aggiungi un gestore di clic per visualizzare un messaggio di notifica
Un gestore di clic è un metodo richiamato ogni volta che l'utente fa clic o tocca un elemento dell'interfaccia utente cliccabile, ad esempio un pulsante. Per creare un gestore dei clic, devi:
- Un metodo che esegue un'operazione.
- Il metodo
setOnClickHandler()
, che collegaButton
al metodo del gestore.
In questa attività, creerai un metodo di gestione dei clic per visualizzare un Toast
. Un toast è un messaggio che viene visualizzato sullo schermo per un breve periodo di tempo. Collega il metodo di gestione dei clic a Button
.
- Nella classe
MainActivity
dopoonCreate()
, crea una funzione privata chiamatarollDice()
.
private fun rollDice() {
}
- Aggiungi questa riga al metodo
rollDice()
per visualizzare unToast
quando viene chiamatorollDice()
:
Toast.makeText(this, "button clicked",
Toast.LENGTH_SHORT).show()
Per creare un avviso popup, chiama il metodo Toast.makeText()
. Questo metodo richiede tre elementi:
- Un oggetto
Context
. L'oggettoContext
consente di comunicare e ottenere informazioni sullo stato attuale del sistema operativo Android. Qui è necessario unContext
in modo che l'oggettoToast
possa indicare al sistema operativo di visualizzare la notifica toast. PoichéAppCompatActivity
è una sottoclasse diContext
, puoi utilizzare la parola chiavethis
per il contesto. - Il messaggio da mostrare, qui
"button clicked"
. - la durata di visualizzazione del messaggio. Il metodo
show()
alla fine visualizza il messaggio di notifica.
- In
onCreate()
, dopo la chiamata afindViewById()
, aggiungi questa riga per assegnarerollDice()
come gestore dei clic all'oggettorollButton
:
rollButton.setOnClickListener { rollDice() }
La definizione completa della classe MainActivity
ora ha questo aspetto:
class MainActivity : AppCompatActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)
val rollButton: Button = findViewById(R.id.roll_button)
rollButton.setOnClickListener { rollDice() }
}
private fun rollDice() {
Toast.makeText(this, "button clicked",
Toast.LENGTH_SHORT).show()
}
}
- Compila ed esegui l'app. Ogni volta che tocchi il pulsante, dovrebbe apparire un messaggio di notifica.
In questa attività, modificherai il metodo rollDice()
per cambiare il testo in TextView
. Per il primo passaggio, modifica il testo da "Hello World!"
alla stringa "Dice Rolled!"
. Per il secondo passaggio, visualizzi un numero casuale compreso tra 1 e 6.
Passaggio 1: visualizza una stringa
- Apri
activity_main.xml
e aggiungi un ID aTextView
.
android:id="@+id/result_text"
- Apri
MainActivity
. Nel metodorollDice()
, commenta la riga per visualizzareToast
. - Utilizza il metodo
findViewById()
per ottenere un riferimento aTextView
in base al suo ID. Assegna il riferimento a una variabileresultText
.
val resultText: TextView = findViewById(R.id.result_text)
- Assegna una nuova stringa alla proprietà
resultText.text
per modificare il testo visualizzato. Puoi ignorare il suggerimento di estrarre questa stringa in una risorsa, in quanto si tratta solo di una stringa temporanea.
resultText.text = "Dice Rolled!"
- Compila ed esegui l'app. Tieni presente che se tocchi il pulsante Tira ora viene aggiornato
TextView
.
Passaggio 2: visualizza un numero casuale
Infine, in questa attività aggiungi casualità al clic sul pulsante per simulare il lancio dei dadi. Ogni volta che si fa clic o si tocca il pulsante, il codice sceglie un numero casuale da 1 a 6 e aggiorna TextView
. L'attività di generazione di un numero casuale non è specifica di Android e utilizzi la classe Random
per farlo.
- Nella parte superiore del metodo
rollDice()
, utilizza il metodoRandom.nextInt()
per ottenere un numero casuale compreso tra 1 e 6:
val randomInt = Random().nextInt(6) + 1
- Imposta la proprietà
text
sul valore dell'intero casuale, come stringa:
resultText.text = randomInt.toString()
- Compila ed esegui l'app. Ogni volta che tocchi il pulsante Tira, il numero nella visualizzazione del testo cambia.
Progetto Android Studio: DiceRoller
Sfida: aggiungi un secondo pulsante all'app con l'etichetta "Conteggio" che viene visualizzato appena sotto il pulsante Tira. Quando viene toccato, il pulsante Conteggio deve ottenere il valore corrente della visualizzazione del testo del risultato, aggiungere 1 e aggiornare la visualizzazione del testo. Assicurati di gestire questi casi limite:
- Se la visualizzazione del testo del risultato non contiene ancora un numero (ovvero se la visualizzazione del testo contiene ancora la stringa predefinita "Hello World"), imposta il testo del risultato su 1.
- Se il numero è già 6, non fare nulla.
Codice della soluzione della sfida di programmazione
Progetto Android Studio: DiceRoller-challenge
Attività
MainActivity
è una sottoclasse diAppCompatActivity
, che a sua volta è una sottoclasse diActivity
. UnActivity
è una classe Android di base responsabile del disegno dell'interfaccia utente di un'app Android e della ricezione degli eventi di input.- Tutte le attività hanno un file di layout associato, che è un file XML nelle risorse dell'app. Il file di layout prende il nome dell'attività, ad esempio
activity_main.xml
. - Il metodo
setContentView()
inMainActivity
associa il layout all'attività e lo gonfia quando viene creata l'attività. - L'inflazione del layout è un processo in cui le visualizzazioni definite nei file di layout XML vengono trasformate (o "gonfiate") in oggetti di visualizzazione Kotlin in memoria. Una volta eseguita l'espansione del layout,
Activity
può disegnare questi oggetti sullo schermo e modificarli in modo dinamico.
Viste
- Tutti gli elementi dell'interfaccia utente nel layout dell'app sono sottoclassi della classe
View
e sono chiamati visualizzazioni.TextView
eButton
sono esempi di visualizzazioni. - Gli elementi
View
possono essere raggruppati all'interno di unViewGroup
. Un gruppo di visualizzazioni funge da contenitore per le visualizzazioni o per altri gruppi di visualizzazioni al suo interno.LinearLayout
è un esempio di gruppo di visualizzazioni che le dispone in modo lineare.
Visualizza attributi
- Gli attributi
android:layout_width
eandroid:layout_height
indicano il peso e l'altezza di una visualizzazione. Il valorematch_parent
estende la visualizzazione alla larghezza o all'altezza del contenitore principale. Il valorewrap_content
riduce la visualizzazione per adattarla ai contenuti. - L'attributo
android:text
indica il testo che una visualizzazione deve mostrare (se la visualizzazione mostra testo). Per i pulsanti,android:text
è l'etichetta del pulsante. - L'attributo
android:orientation
in un gruppo di visualizzazioniLinearLayout
organizza gli elementi di visualizzazione che contiene. Un valore dihorizontal
dispone le visualizzazioni da sinistra a destra. Un valore divertical
dispone le visualizzazioni dall'alto verso il basso. - L'attributo
android:layout_gravity
determina il posizionamento di una visualizzazione e di tutti i relativi elementi secondari. - L'attributo
android:textSize
definisce le dimensioni del testo in una visualizzazione di testo. Le dimensioni del testo sono specificate in unità sp (pixel scalabili). Utilizzando le unità sp, puoi dimensionare il testo indipendentemente dalla qualità del display del dispositivo.
Strings
- Anziché codificare le stringhe nel layout, è consigliabile utilizzare le risorse stringa.
- Le risorse stringa sono contenute nel file
values/res/string.xml
. - Per estrarre le stringhe, utilizza
Alt+Enter
(Option+Enter
su un Mac). Seleziona Estrai risorse stringa dal menu popup.
Utilizzare le visualizzazioni
- Per connettere il codice Kotlin a una visualizzazione definita nel layout, devi ottenere un riferimento all'oggetto visualizzazione dopo che la visualizzazione è stata visualizzata. Assegna un ID (
android:id
) alla visualizzazione nel layout, quindi utilizza il metodofindViewById()
per ottenere l'oggetto visualizzazione associato. - Quando crei un ID per una visualizzazione nel file di layout XML, Android Studio crea una costante intera con il nome dell'ID nella classe
R
generata. Puoi quindi utilizzare questo riferimentoR.id
nel metodofindViewById()
. - Puoi impostare gli attributi di un oggetto vista nel codice Kotlin direttamente in base al nome della proprietà. Ad esempio, il testo in una visualizzazione di testo è definito dall'attributo
android:text
nel codice XML ed è definito dalla proprietàtext
in Kotlin. - Un gestore dei clic è un metodo richiamato quando l'utente fa clic o tocca un elemento dell'interfaccia utente. Per collegare un metodo di gestione dei clic a una visualizzazione, ad esempio un pulsante, utilizza il metodo
setOnClickListener()
.
Utilizzo dei toast
Un toast è una visualizzazione che mostra all'utente un semplice messaggio in una piccola finestra popup.
Per creare un toast, chiama il metodo di fabbrica makeText()
nella classe Toast
con tre argomenti:
- Il contesto dell'app
Activity
- Il messaggio da visualizzare, ad esempio una risorsa stringa
- Una durata, ad esempio
Toast.LENGTH_SHORT
Per visualizzare l'avviso popup, chiama show()
.
Corso Udacity:
Documentazione per sviluppatori Android:
- Scopri Android Studio
- Layout
View
Button
TextView
- Panoramica delle risorse dell'app
- Panoramica degli eventi di input
findViewById()
setOnClickListener()
Context
Altro:
Questa sezione elenca i possibili compiti a casa per gli studenti che seguono questo codelab nell'ambito di un corso guidato da un insegnante. Spetta all'insegnante:
- Assegna i compiti, se richiesto.
- Comunica agli studenti come inviare i compiti.
- Valuta i compiti a casa.
Gli insegnanti possono utilizzare questi suggerimenti nella misura che ritengono opportuna e sono liberi di assegnare qualsiasi altro compito a casa che ritengono appropriato.
Se stai seguendo questo codelab in autonomia, sentiti libero di utilizzare questi compiti per casa per mettere alla prova le tue conoscenze.
Cambiare un'app
Apri l'app DiceRoller. Aggiungi all'app un pulsante denominato "Reset" che viene visualizzato appena sotto il pulsante Tira. Fai in modo che il pulsante reimposti la visualizzazione del testo del risultato su 0.
Rispondi a queste domande
Domanda 1
Quale metodo di un Activity
gonfia il layout dell'app e rende disponibili le relative visualizzazioni come oggetti?
onCreate()
setClickListener()
setContentView()
show()
Domanda 2
Quale attributo della visualizzazione utilizzi per impostare la larghezza di una visualizzazione in modo che si adatti ai contenuti?
android:view_width="wrap"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_width="match_parent"
Inviare l'app per la classificazione
Verifica che l'app disponga di quanto segue:
- Il layout dell'app deve includere una visualizzazione del testo e due pulsanti.
- Il codice dell'app deve impostare due gestori di clic, uno per ogni pulsante.
- Il gestore dei clic che reimposta la visualizzazione del testo deve impostare la proprietà del testo su 0.
Inizia la lezione successiva:
Per i link ad altri codelab di questo corso, consulta la pagina di destinazione dei codelab di Android Kotlin Fundamentals.