En aquest tema, aprendrem sobre els dissenys XML en Android, que són fonamentals per crear la interfície d'usuari (UI) de les aplicacions Android. Els dissenys XML permeten definir la disposició dels elements de la UI de manera declarativa, separant la lògica de la presentació.
Conceptes Clau
-
Què és XML?
- XML (eXtensible Markup Language) és un llenguatge de marcatge utilitzat per definir dades de manera estructurada.
- En Android, XML s'utilitza per definir els dissenys de la UI.
-
Tipus de Dissenys en Android
- LinearLayout: Disposa els elements en una fila o columna.
- RelativeLayout: Disposa els elements en relació amb altres elements o amb el pare.
- ConstraintLayout: Permet disposar els elements amb restriccions flexibles i complexes.
- FrameLayout: Disposa els elements en una sola pila.
- GridLayout: Disposa els elements en una graella.
-
Components Bàsics d'un Fitxer de Disseny XML
- Elements: Representen els components de la UI (botons, text, imatges, etc.).
- Atributs: Defineixen les propietats dels elements (amplada, alçada, text, color, etc.).
Estructura d'un Fitxer de Disseny XML
Un fitxer de disseny XML típic en Android té l'estructura següent:
<?xml version="1.0" encoding="utf-8"?> <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/textView" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="Hola, món!" /> <Button android:id="@+id/button" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="Prem aquí" /> </LinearLayout>
Explicació del Codi
-
LinearLayout: El contenidor principal que disposa els elements en una columna (vertical).
xmlns:android
: Defineix l'espai de noms XML per als atributs d'Android.android:layout_width
iandroid:layout_height
: Defineixen l'amplada i l'alçada del contenidor.android:orientation
: Defineix l'orientació dels elements dins del contenidor (vertical en aquest cas).
-
TextView: Un element de text.
android:id
: Identificador únic per a l'element.android:layout_width
iandroid:layout_height
: Defineixen l'amplada i l'alçada de l'element.android:text
: Defineix el text que es mostrarà.
-
Button: Un botó que l'usuari pot prémer.
android:id
: Identificador únic per al botó.android:layout_width
iandroid:layout_height
: Defineixen l'amplada i l'alçada del botó.android:text
: Defineix el text que es mostrarà al botó.
Exercici Pràctic
Objectiu
Crear un disseny XML que contingui un EditText
per introduir text, un TextView
per mostrar el text introduït i un Button
per actualitzar el TextView
amb el text de l'EditText
.
Passos
- Obre el fitxer
activity_main.xml
en el directorires/layout
. - Substitueix el contingut existent pel següent codi XML:
<?xml version="1.0" encoding="utf-8"?> <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"> <EditText android:id="@+id/editText" android:layout_width="match_parent" android:layout_height="wrap_content" android:hint="Introdueix text aquí" /> <Button android:id="@+id/buttonUpdate" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="Actualitza" /> <TextView android:id="@+id/textViewResult" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="El text apareixerà aquí" /> </LinearLayout>
Explicació del Codi
-
EditText: Un camp de text on l'usuari pot introduir dades.
android:hint
: Text que es mostra quan el camp està buit.
-
Button: Un botó per actualitzar el
TextView
.android:text
: Text que es mostra al botó.
-
TextView: Un element de text que mostrarà el text introduït a l'
EditText
.
Solució
Per completar l'exercici, necessitem afegir la lògica a l'activitat principal (MainActivity.java
o MainActivity.kt
) per actualitzar el TextView
quan es premi el botó.
Java
package com.example.myfirstapp; import android.os.Bundle; import android.view.View; import android.widget.Button; import android.widget.EditText; import android.widget.TextView; import androidx.appcompat.app.AppCompatActivity; public class MainActivity extends AppCompatActivity { private EditText editText; private TextView textViewResult; private Button buttonUpdate; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); editText = findViewById(R.id.editText); textViewResult = findViewById(R.id.textViewResult); buttonUpdate = findViewById(R.id.buttonUpdate); buttonUpdate.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { String text = editText.getText().toString(); textViewResult.setText(text); } }); } }
Kotlin
package com.example.myfirstapp import android.os.Bundle import android.widget.Button import android.widget.EditText import android.widget.TextView import androidx.appcompat.app.AppCompatActivity class MainActivity : AppCompatActivity() { private lateinit var editText: EditText private lateinit var textViewResult: TextView private lateinit var buttonUpdate: Button override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) setContentView(R.layout.activity_main) editText = findViewById(R.id.editText) textViewResult = findViewById(R.id.textViewResult) buttonUpdate = findViewById(R.id.buttonUpdate) buttonUpdate.setOnClickListener { val text = editText.text.toString() textViewResult.text = text } } }
Resum
En aquest tema, hem après sobre els dissenys XML en Android, incloent-hi els tipus de dissenys més comuns i com crear un fitxer de disseny XML bàsic. També hem realitzat un exercici pràctic per reforçar els conceptes apresos. En el proper tema, explorarem els components bàsics de la interfície d'usuari en més detall.
Curs d'Android Studio
Mòdul 1: Introducció a Android Studio
- Introducció a Android Studio
- Configuració d'Android Studio
- Comprensió de la Interfície d'Android Studio
- Creació del teu Primer Projecte Android
Mòdul 2: Desenvolupament Bàsic d'Android
- Comprensió de l'Estructura del Projecte Android
- Introducció als Dissenys XML
- Components Bàsics de la Interfície d'Usuari
- Introducció a les Activitats
- Executar la teva Aplicació en un Emulador
Mòdul 3: Desenvolupament Intermedi d'Android
- Introducció als Intents
- Treballar amb Fragments
- Gestió de l'Entrada de l'Usuari
- Ús de RecyclerView
- Xarxes en Android
Mòdul 4: Desenvolupament Avançat d'Android
- Persistència de Dades amb SQLite
- Ús de Room per a la Gestió de Bases de Dades
- Components Avançats de la Interfície d'Usuari
- Vistes Personalitzades i Canvas
- Treballar amb Tasques en Segon Pla
Mòdul 5: Desenvolupament Professional d'Android
- Implementació de l'Arquitectura MVVM
- Injecció de Dependències amb Dagger
- Proves Unitàries i Proves de la Interfície d'Usuari
- Publicació de la teva Aplicació a Google Play
- Optimització del Rendiment