Semaine 5
Semaine 5
Semaine 5
1 / 65
Le cours de cette semaine concerne l’ergonomie d’une application
Android.
2 / 65
Barre d’action et menus
3 / 65
Android - Semaine 5
Barre d’action et menus
Barre d’action
4 / 65
Android - Semaine 5
Barre d’action et menus
5 / 65
Android - Semaine 5
Barre d’action et menus
Créer res/menu/nom_du_menu.xml :
<menu xmlns:android="..." >
<item android:id="@+id/menu_creer"
android:icon="@drawable/ic_menu_creer"
android:showAsAction="ifRoom"
android:title="@string/menu_creer"/>
<item android:id="@+id/menu_chercher" ... />
...
</menu>
6 / 65
Android - Semaine 5
Barre d’action et menus
Téléchargez l’Action Bar Icon Pack pour des icônes à mettre dans
vos applications.
7 / 65
Android - Semaine 5
Barre d’action et menus
8 / 65
Android - Semaine 5
Barre d’action et menus
@Override
public boolean onCreateOptionsMenu(Menu menu)
{
...
// ajouter des items manuellement
menu.add(Menu.NONE, MENU_ITEM1, ordre, titre).setIcon(image);
...
}
Cette fois, vous devrez choisir un identifiant pour les items. L’ordre
indique la priorité de cet item ; mettre Menu.NONE s’il n’y en a pas.
9 / 65
Android - Semaine 5
Barre d’action et menus
10 / 65
Android - Semaine 5
Barre d’action et menus
Menus en cascade
11 / 65
Android - Semaine 5
Menus contextuels
Menus contextuels
12 / 65
Android - Semaine 5
Menus contextuels
Menus contextuels
Le souci principal, c’est qu’il n’y a pas de lien entre d’une part le
View Holder qui observe le clic long sur un élément de la liste et fait
afficher le menu contextuel, et d’autre part l’activité qui est réveillée
quand l’utilisateur sélectionne un item du menu.
Il faut fournir la position de l’élément de la liste à l’activité, et on
est obligé de bricoler.
14 / 65
Android - Semaine 5
Menus contextuels
15 / 65
Android - Semaine 5
Menus contextuels
16 / 65
Android - Semaine 5
Menus contextuels
17 / 65
Android - Semaine 5
Menus contextuels
Annonces et dialogues
19 / 65
Android - Semaine 5
Annonces et dialogues
Annonces : toasts
Un « toast » est un message apparaissant en bas d’écran pendant un
instant, par exemple pour confirmer la réalisation d’une action. Un
toast n’affiche aucun bouton et n’est pas actif.
Dialogues
Un dialogue est une petite fenêtre qui apparaît au dessus d’un écran
pour afficher ou demander quelque chose d’urgent à l’utilisateur, par
exemple une confirmation.
Dialogue d’alerte
22 / 65
Android - Semaine 5
Annonces et dialogues
23 / 65
Android - Semaine 5
Annonces et dialogues
Dialogues personnalisés
24 / 65
Android - Semaine 5
Annonces et dialogues
25 / 65
Android - Semaine 5
Annonces et dialogues
Affichage du dialogue
26 / 65
Android - Semaine 5
Fragments et activités
Fragments et activités
27 / 65
Android - Semaine 5
Fragments et activités
Fragments
liste d’items
affichage des infos d’un item
édition d’un item
28 / 65
Android - Semaine 5
Fragments et activités
Tablettes, smartphones. . .
Une interface devient plus souple avec des fragments. Selon la taille
d’écran, on peut afficher une liste et les détails, ou séparer les deux.
29 / 65
Android - Semaine 5
Fragments et activités
30 / 65
Android - Semaine 5
Fragments et activités
31 / 65
Android - Semaine 5
Fragments et activités
@Override
public View onCreateView(LayoutInflater inflater,
ViewGroup container, Bundle savedInstanceState) {
ui = PlaneteInfosBinding.inflate(inflater, container, false)
// écouteurs, adaptateur...
return ui.getRoot();
}
}
32 / 65
Android - Semaine 5
Fragments et activités
@Override
public View onCreateView(LayoutInflater inflater, ...) {
...
... récupérer la liste (application ou BDD)
adapter = new PlaneteAdapter(liste);
... layout manager, séparateur, écouteurs...
return ui.getRoot();
}
}
33 / 65
Android - Semaine 5
Fragments et activités
Menus de fragments
34 / 65
Android - Semaine 5
Fragments et activités
35 / 65
Android - Semaine 5
Fragments et activités
37 / 65
Android - Semaine 5
Fragments et activités
res/layout-land/activity_main.xml en paysage :
<LinearLayout xmlns:android="..."
android:orientation="horizontal" ... >
<fragment android:id="@+id/frag_liste" ... />
<fragment android:id="@+id/frag_infos" ... />
</LinearLayout>
38 / 65
Android - Semaine 5
Fragments et activités
41 / 65
Android - Semaine 5
Fragments et activités
Écouteur de l’activité
Voici maintenant l’écouteur de l’activité principale :
@Override public void onItemClick(int position)
{
FragmentManager manager = getSupportFragmentManager();
InfosFragment frag_infos = (InfosFragment)
manager.findFragmentById(R.id.frag_infos);
if (frag_infos != null && frag_infos.isVisible()) {
// le fragment est présent, alors lui fournir la position
frag_infos.setItemPosition(position);
} else {
// lancer InfosActivity pour afficher l'item
Intent intent = new Intent(this, InfosActivity.class);
intent.putExtra("position", position);
startActivity(intent);
}
}
42 / 65
Android - Semaine 5
Fragments et activités
À méditer, partie 2
Une 2e classe en tant qu’écouteur des événements d’un objet de
Classe1, elle implémente l’interface et se déclare auprès de l’objet.
public class Classe2 implements Classe1.OnEvenementListener
{
private Classe1 objet1;
public Classe2() {
...
objet1.setOnEvenementListener(this);
}
44 / 65
Android - Semaine 5
Préférences d’application
Préférences d’application
45 / 65
Android - Semaine 5
Préférences d’application
Illustration
46 / 65
Android - Semaine 5
Préférences d’application
Présentation
47 / 65
Android - Semaine 5
Préférences d’application
48 / 65
Android - Semaine 5
Préférences d’application
Explications
Ce fichier xml définit à la fois :
Les préférences :
l’identifiant : android:key
le titre résumé : android:title
le sous-titre détaillé : android:summary
la valeur initiale : android:defaultValue
La mise en page. C’est une sorte de layout contenant des cases
à cocher, des zones de saisie. . . Il est possible de créer des
pages de préférences en cascade comme par exemple, les
préférences système.
50 / 65
Android - Semaine 5
Préférences d’application
51 / 65
Android - Semaine 5
Préférences d’application
52 / 65
Android - Semaine 5
Préférences d’application
<fragment xmlns:android="..."
android:id="@+id/frag_prefs"
android:name="LE.PACKAGE.COMPLET.PrefsFragment"
... />
Android - Semaine 5
Préférences d’application
54 / 65
Android - Semaine 5
Bibliothèque support
Bibliothèque support
55 / 65
Android - Semaine 5
Bibliothèque support
56 / 65
Android - Semaine 5
Bibliothèque support
Bibliothèque support
58 / 65
Android - Semaine 5
Bibliothèque support
59 / 65
Android - Semaine 5
Bibliothèque support
implementation "androidx.appcompat:appcompat:1.0.2"
implementation "androidx.recyclerview:recyclerview:1.1.0"
60 / 65
Android - Semaine 5
Bibliothèque support
<androidx.recyclerview.widget.RecyclerView .../>
61 / 65
Android - Semaine 5
Bibliothèque support
Mode d’emploi
defaultConfig {
applicationId "mon.package"
minSdkVersion 16
targetSdkVersion 29
62 / 65
Android - Semaine 5
Bibliothèque support
63 / 65
Android - Semaine 5
Bibliothèque support
Programmation
Enfin, il suffit de faire appel à ces classes pour travailler. Elles sont
par exemple dans le package androidx.fragment.app.
import androidx.fragment.app.FragmentActivity;
import androidx.recyclerview.widget.RecyclerView;
64 / 65