En aquest tema, explorarem components avançats de la interfície d'usuari (UI) en Android. Aquests components permeten crear aplicacions més interactives i atractives visualment. Aprendrem a utilitzar components com el ViewPager
, TabLayout
, CoordinatorLayout
i CollapsingToolbarLayout
.
Objectius del Tema
- Comprendre l'ús del
ViewPager
per a la navegació entre fragments. - Implementar un
TabLayout
per a la navegació amb pestanyes. - Utilitzar el
CoordinatorLayout
per a la coordinació de moviments entre vistes. - Crear una barra d'eines que es col·lapsa amb el
CollapsingToolbarLayout
.
- ViewPager
Què és el ViewPager?
El ViewPager
és un component que permet als usuaris navegar entre diferents fragments lliscant amb el dit. És útil per a crear interfícies d'usuari que necessiten mostrar múltiples pantalles de contingut.
Implementació del ViewPager
Pas 1: Afegir les dependències necessàries
Assegura't d'afegir la dependència del ViewPager
al teu build.gradle
:
Pas 2: Crear el disseny XML
Afegeix el ViewPager
al teu fitxer de disseny XML:
<androidx.viewpager2.widget.ViewPager2 android:id="@+id/viewPager" android:layout_width="match_parent" android:layout_height="match_parent" />
Pas 3: Configurar l'adaptador del ViewPager
Crea una classe d'adaptador per al ViewPager
:
public class ViewPagerAdapter extends FragmentStateAdapter { public ViewPagerAdapter(@NonNull FragmentActivity fragmentActivity) { super(fragmentActivity); } @NonNull @Override public Fragment createFragment(int position) { switch (position) { case 0: return new FirstFragment(); case 1: return new SecondFragment(); default: return new ThirdFragment(); } } @Override public int getItemCount() { return 3; // Nombre de fragments } }
Pas 4: Configurar el ViewPager en l'activitat
ViewPager2 viewPager = findViewById(R.id.viewPager); ViewPagerAdapter adapter = new ViewPagerAdapter(this); viewPager.setAdapter(adapter);
- TabLayout
Què és el TabLayout?
El TabLayout
és un component que permet als usuaris navegar entre diferents vistes mitjançant pestanyes. Sovint s'utilitza en combinació amb el ViewPager
.
Implementació del TabLayout
Pas 1: Afegir les dependències necessàries
Assegura't d'afegir la dependència del TabLayout
al teu build.gradle
:
Pas 2: Crear el disseny XML
Afegeix el TabLayout
i el ViewPager
al teu fitxer de disseny XML:
<com.google.android.material.tabs.TabLayout android:id="@+id/tabLayout" android:layout_width="match_parent" android:layout_height="wrap_content" /> <androidx.viewpager2.widget.ViewPager2 android:id="@+id/viewPager" android:layout_width="match_parent" android:layout_height="match_parent" />
Pas 3: Configurar el TabLayout amb el ViewPager
TabLayout tabLayout = findViewById(R.id.tabLayout); ViewPager2 viewPager = findViewById(R.id.viewPager); ViewPagerAdapter adapter = new ViewPagerAdapter(this); viewPager.setAdapter(adapter); new TabLayoutMediator(tabLayout, viewPager, (tab, position) -> { switch (position) { case 0: tab.setText("Tab 1"); break; case 1: tab.setText("Tab 2"); break; case 2: tab.setText("Tab 3"); break; } }).attach();
- CoordinatorLayout i CollapsingToolbarLayout
Què és el CoordinatorLayout?
El CoordinatorLayout
és un layout avançat que permet coordinar moviments entre vistes. És especialment útil per a crear efectes de desplaçament complexos.
Què és el CollapsingToolbarLayout?
El CollapsingToolbarLayout
és un layout que permet crear una barra d'eines que es col·lapsa quan l'usuari desplaça la vista cap amunt.
Implementació del CoordinatorLayout i CollapsingToolbarLayout
Pas 1: Crear el disseny XML
<androidx.coordinatorlayout.widget.CoordinatorLayout android:layout_width="match_parent" android:layout_height="match_parent"> <com.google.android.material.appbar.AppBarLayout android:layout_width="match_parent" android:layout_height="wrap_content"> <com.google.android.material.appbar.CollapsingToolbarLayout android:layout_width="match_parent" android:layout_height="match_parent" app:layout_scrollFlags="scroll|exitUntilCollapsed"> <ImageView android:layout_width="match_parent" android:layout_height="200dp" android:scaleType="centerCrop" android:src="@drawable/your_image" /> <com.google.android.material.appbar.MaterialToolbar android:layout_width="match_parent" android:layout_height="?attr/actionBarSize" app:layout_collapseMode="pin" /> </com.google.android.material.appbar.CollapsingToolbarLayout> </com.google.android.material.appbar.AppBarLayout> <androidx.recyclerview.widget.RecyclerView android:layout_width="match_parent" android:layout_height="match_parent" app:layout_behavior="@string/appbar_scrolling_view_behavior" /> </androidx.coordinatorlayout.widget.CoordinatorLayout>
Exercicis Pràctics
Exercici 1: Implementar un ViewPager amb tres fragments
- Crea tres fragments diferents.
- Configura un
ViewPager
per a navegar entre aquests fragments.
Exercici 2: Afegir un TabLayout al ViewPager
- Afegeix un
TabLayout
al disseny XML. - Configura el
TabLayout
per a treballar amb elViewPager
.
Exercici 3: Crear una barra d'eines que es col·lapsa
- Utilitza el
CoordinatorLayout
i elCollapsingToolbarLayout
per a crear una barra d'eines que es col·lapsa quan l'usuari desplaça la vista cap amunt.
Solucions
Solució a l'Exercici 1
public class ViewPagerAdapter extends FragmentStateAdapter { public ViewPagerAdapter(@NonNull FragmentActivity fragmentActivity) { super(fragmentActivity); } @NonNull @Override public Fragment createFragment(int position) { switch (position) { case 0: return new FirstFragment(); case 1: return new SecondFragment(); default: return new ThirdFragment(); } } @Override public int getItemCount() { return 3; } }
Solució a l'Exercici 2
TabLayout tabLayout = findViewById(R.id.tabLayout); ViewPager2 viewPager = findViewById(R.id.viewPager); ViewPagerAdapter adapter = new ViewPagerAdapter(this); viewPager.setAdapter(adapter); new TabLayoutMediator(tabLayout, viewPager, (tab, position) -> { switch (position) { case 0: tab.setText("Tab 1"); break; case 1: tab.setText("Tab 2"); break; case 2: tab.setText("Tab 3"); break; } }).attach();
Solució a l'Exercici 3
<androidx.coordinatorlayout.widget.CoordinatorLayout android:layout_width="match_parent" android:layout_height="match_parent"> <com.google.android.material.appbar.AppBarLayout android:layout_width="match_parent" android:layout_height="wrap_content"> <com.google.android.material.appbar.CollapsingToolbarLayout android:layout_width="match_parent" android:layout_height="match_parent" app:layout_scrollFlags="scroll|exitUntilCollapsed"> <ImageView android:layout_width="match_parent" android:layout_height="200dp" android:scaleType="centerCrop" android:src="@drawable/your_image" /> <com.google.android.material.appbar.MaterialToolbar android:layout_width="match_parent" android:layout_height="?attr/actionBarSize" app:layout_collapseMode="pin" /> </com.google.android.material.appbar.CollapsingToolbarLayout> </com.google.android.material.appbar.AppBarLayout> <androidx.recyclerview.widget.RecyclerView android:layout_width="match_parent" android:layout_height="match_parent" app:layout_behavior="@string/appbar_scrolling_view_behavior" /> </androidx.coordinatorlayout.widget.CoordinatorLayout>
Conclusió
En aquest tema, hem après a utilitzar components avançats de la interfície d'usuari en Android, com el ViewPager
, TabLayout
, CoordinatorLayout
i CollapsingToolbarLayout
. Aquests components ens permeten crear aplicacions més interactives i atractives visualment. En el proper tema, explorarem com treballar amb tasques en segon pla.
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