En aquest tema, aprendrem a construir interfícies d'usuari (UI) per a aplicacions Android utilitzant Kotlin. Ens centrarem en els conceptes bàsics de la creació de layouts, la utilització de components d'UI i la manipulació d'aquests components des del codi Kotlin.
Objectius
- Entendre els conceptes bàsics de la creació de layouts en Android.
- Aprendre a utilitzar els components d'UI més comuns.
- Manipular els components d'UI des del codi Kotlin.
- Introducció als Layouts en Android
1.1. Tipus de Layouts
Els layouts són contenidors que defineixen l'estructura de la interfície d'usuari en una aplicació Android. Els tipus de layouts més comuns són:
- LinearLayout: Organitza els seus fills en una única columna o fila.
- RelativeLayout: Permet posicionar els seus fills en relació amb altres elements o amb el contenidor pare.
- ConstraintLayout: Proporciona un sistema de posicionament més flexible i potent.
1.2. Creació d'un Layout
Els layouts es defineixen en fitxers XML dins del directori res/layout. A continuació, es mostra un exemple d'un fitxer XML que defineix un LinearLayout amb dos TextView:
<!-- res/layout/activity_main.xml -->
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical">
<TextView
android:id="@+id/textView1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Hello, World!" />
<TextView
android:id="@+id/textView2"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Welcome to Kotlin!" />
</LinearLayout>
- Components d'UI Comuns
2.1. TextView
El TextView és un component d'UI que mostra text a la pantalla. Es pot personalitzar amb diferents atributs com ara textSize, textColor, gravity, etc.
2.2. Button
El Button és un component d'UI que permet als usuaris interactuar amb l'aplicació mitjançant clics.
2.3. EditText
L'EditText és un component d'UI que permet als usuaris introduir text.
2.4. ImageView
L'ImageView és un component d'UI que mostra imatges a la pantalla.
Exemple de Components d'UI
A continuació, es mostra un exemple d'un layout que utilitza diversos components d'UI:
<!-- res/layout/activity_main.xml -->
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
android:padding="16dp">
<TextView
android:id="@+id/textView"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Enter your name:" />
<EditText
android:id="@+id/editText"
android:layout_width="match_parent"
android:layout_height="wrap_content" />
<Button
android:id="@+id/button"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Submit" />
<ImageView
android:id="@+id/imageView"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:src="@drawable/ic_launcher_foreground" />
</LinearLayout>
- Manipulació de Components d'UI des de Kotlin
3.1. Accés als Components d'UI
Per accedir als components d'UI des del codi Kotlin, utilitzem els seus identificadors (id). A continuació, es mostra un exemple de com accedir i manipular un TextView i un Button:
// MainActivity.kt
import android.os.Bundle
import android.widget.Button
import android.widget.EditText
import android.widget.TextView
import androidx.appcompat.app.AppCompatActivity
class MainActivity : AppCompatActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)
val textView: TextView = findViewById(R.id.textView)
val editText: EditText = findViewById(R.id.editText)
val button: Button = findViewById(R.id.button)
button.setOnClickListener {
val enteredText = editText.text.toString()
textView.text = "Hello, $enteredText!"
}
}
}3.2. Exemple Pràctic
En aquest exemple pràctic, crearem una aplicació que permet als usuaris introduir el seu nom i mostrarà un missatge de benvinguda quan es faci clic al botó.
Pas 1: Definir el Layout
Crea un fitxer XML anomenat activity_main.xml dins del directori res/layout amb el següent contingut:
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
android:padding="16dp">
<TextView
android:id="@+id/textView"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Enter your name:" />
<EditText
android:id="@+id/editText"
android:layout_width="match_parent"
android:layout_height="wrap_content" />
<Button
android:id="@+id/button"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Submit" />
</LinearLayout>Pas 2: Escriure el Codi Kotlin
Crea un fitxer Kotlin anomenat MainActivity.kt dins del directori src/main/java/com/example/yourapp amb el següent contingut:
import android.os.Bundle
import android.widget.Button
import android.widget.EditText
import android.widget.TextView
import androidx.appcompat.app.AppCompatActivity
class MainActivity : AppCompatActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)
val textView: TextView = findViewById(R.id.textView)
val editText: EditText = findViewById(R.id.editText)
val button: Button = findViewById(R.id.button)
button.setOnClickListener {
val enteredText = editText.text.toString()
textView.text = "Hello, $enteredText!"
}
}
}Exercicis Pràctics
Exercici 1: Afegir un ImageView
Modifica l'exemple anterior per afegir un ImageView que mostri una imatge quan es faci clic al botó.
Solució:
- Afegeix un
ImageViewal fitxeractivity_main.xml:
<ImageView
android:id="@+id/imageView"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:src="@drawable/ic_launcher_foreground"
android:visibility="gone" />- Modifica el fitxer
MainActivity.ktper mostrar la imatge quan es faci clic al botó:
import android.os.Bundle
import android.widget.Button
import android.widget.EditText
import android.widget.ImageView
import android.widget.TextView
import androidx.appcompat.app.AppCompatActivity
class MainActivity : AppCompatActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)
val textView: TextView = findViewById(R.id.textView)
val editText: EditText = findViewById(R.id.editText)
val button: Button = findViewById(R.id.button)
val imageView: ImageView = findViewById(R.id.imageView)
button.setOnClickListener {
val enteredText = editText.text.toString()
textView.text = "Hello, $enteredText!"
imageView.visibility = ImageView.VISIBLE
}
}
}Exercici 2: Canviar el Color del Text
Modifica l'exemple per canviar el color del text del TextView a vermell quan es faci clic al botó.
Solució:
- Modifica el fitxer
MainActivity.ktper canviar el color del text:
import android.graphics.Color
import android.os.Bundle
import android.widget.Button
import android.widget.EditText
import android.widget.TextView
import androidx.appcompat.app.AppCompatActivity
class MainActivity : AppCompatActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)
val textView: TextView = findViewById(R.id.textView)
val editText: EditText = findViewById(R.id.editText)
val button: Button = findViewById(R.id.button)
button.setOnClickListener {
val enteredText = editText.text.toString()
textView.text = "Hello, $enteredText!"
textView.setTextColor(Color.RED)
}
}
}Conclusió
En aquesta secció, hem après a construir interfícies d'usuari en Android utilitzant Kotlin. Hem explorat els diferents tipus de layouts, els components d'UI més comuns i com manipular aquests components des del codi Kotlin. A més, hem realitzat exercicis pràctics per reforçar els conceptes apresos. En la següent secció, explorarem com gestionar l'entrada de l'usuari en les nostres aplicacions Android.
Curs de Programació en Kotlin
Mòdul 1: Introducció a Kotlin
- Introducció a Kotlin
- Configuració de l'Entorn de Desenvolupament
- Conceptes Bàsics de Kotlin: Variables i Tipus de Dades
- Flux de Control: Condicionals i Bucles
- Funcions i Lambdas
Mòdul 2: Programació Orientada a Objectes en Kotlin
- Classes i Objectes
- Herència i Interfícies
- Modificadors de Visibilitat
- Classes de Dades i Classes Segellades
- Declaracions d'Objectes i Objectes Companys
Mòdul 3: Funcions Avançades de Kotlin
- Col·leccions i Genèrics
- Funcions d'Extensió
- Funcions d'Ordre Superior i Programació Funcional
- Coroutines i Programació Asíncrona
- DSL (Llenguatge Específic de Domini) en Kotlin
Mòdul 4: Kotlin per al Desenvolupament d'Android
- Introducció al Desenvolupament d'Android amb Kotlin
- Construcció d'Interfícies d'Usuari
- Gestió de l'Entrada de l'Usuari
- Xarxes i Emmagatzematge de Dades
- Proves i Depuració
