Académique Documents
Professionnel Documents
Culture Documents
Choix de la Version
Chaque version d’Android, dénotée par son API level, ex: 25, apporte des améliorations et
supprime des dispositifs obsolètes.
Toute application exige un certain niveau d’API :
Minimum SDK : il faut au moins cette API car on utilise certaines classes et méthodes
absentes des précédentes APIs,
Il y a aussi deux notions à connaître :
Target SDK : l’application sera testée et marchera correctement jusqu’à ce niveau d’API,
Compile With : c’est le niveau maximal de fonctionnalités qu’on se limite à employer. Si on
fait appel à quelque chose de plus récent que ce niveau, le logiciel ne se compilera pas.
Une application est composée d’une ou plusieurs activités. Chacune gère un écran
d’interaction avec l’utilisateur et est définie par une classe Java.
Une application complexe peut aussi contenir :
des services : ce sont des processus qui tournent en arrière-plan, des fournisseurs de
contenu : ils représentent une sorte de base de données
des récepteurs d’annonces : pour gérer des événements globaux envoyés par le
système à toutes les applications.
Le fichier AndroidManifest.xml déclare les éléments d’une application, avec un ’.’ devant
le nom de classe des activités :
<?xml version="1.0" encoding="utf-8"?>
<manifest ... >
<application android:icon="@drawable/app_icon.png" ...>
<activity android:name=".MainActivity"
... />
<activity android:name=".EditActivity" ... />…
</application></manifest>
Démarrage d’une activité et Intents
Les activités sont démarrées à l’aide d’Intents.
Pour faire communiquer les deux activés il faut passer par un Intent.
Ce dernier représente l’intention de faire quelque chose, et permet à l’activité principale de
lancer une autre activité
Les intents explicites
Créer un intent explicite est très simple puisqu’il suffit de donner un Context qui appartienne
au package où se trouve la classe de destination :
Intent intent = new Intent(Context context, Class<?> cls);
Il existe ensuite deux façons de lancer l’intent, selon qu’on veuille que le composant de
destination nous renvoie une réponse ou pas.
Les intents implicites
Ici, on fera en sorte d’envoyer une requête à un destinataire, sans savoir qui il est, et d’ailleurs
on s’en fiche tant que le travail qu’on lui demande de faire est effectué. Ainsi, les applications
destinataires sont soit fournies par Android, soit par d’autres applications téléchargées sur le
Play Store par exemple.
Un Intent est constitué de:
– Action à réaliser
– Donnée sur laquelle réaliser l'action sous forme d'URI (setData()) ou d'un type MIME
(setType())
– Paramètre optionnels (EXTRA)
● Création d'un Intent
– Intent(Context, Class) pour l'appels explicite
– Intent(String action, URI) pour l'appel implicite
– addCategory(String category) ajout de catégories – putExtra(String key,value)
– setFlags(flags) permission sur les données, relation activité/BackStack
La première lance la seconde par :
Intent intent = new Intent(this, Activ2.class); startActivity(intent);
On peut demander la terminaison de this après lancement de Activ2 ainsi :
Intent intent = new Intent(this, Activ2.class);
startActivity(intent);
finish();
Au début, le système Android lance l’activité qui est marquée action=MAIN et
catégorie=LAUNCHER dans AndroidManifest.xml.
Lancement avec attente de résultat
Le lancement d’une activité avec attente de résultat est plus complexe. Il faut définir un code
d’appel RequestCode fourni au lancement. private static final int APPEL_ACTIV2 = 1;
Intent intent = new Intent(this, Activ2.class);
startActivityForResult(intent, APPEL_ACTIV2);
Utilisez la setResult() méthode avec un code de réponse et Intent avec les données de réponse:
setResult(RESULT_OK,replyIntent);
Les codes de réponse sont définis par la Activityclasse et peuvent être
RESULT_OK: La demande a réussi.
RESULT_CANCELED: L'utilisateur a annulé l'opération.
RESULT_FIRST_USER: Pour définir vos propres codes de résultat.
Maintenant que le lancé Activity a renvoyé des données à l'origine Activity avec
un Intent, celui-ci Activity doit d' abord gérer ces données. Pour gérer les données
renvoyées dans l'origine Activity, implémentez la onActivityResult()méthode de
rappel. Voici un exemple simple.
public void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
if (requestCode == TEXT_REQUEST) {
if (resultCode == RESULT_OK) {
String reply =
data.getStringExtra(SecondActivity.EXTRA_RETURN_MESSAGE);
// process data
}
}
}
Les trois arguments pour onActivityResult()contenir toutes les informations dont vous
avez besoin pour gérer les données de retour.
Code de demande: le code de demande que vous avez défini lorsque vous avez lancé
le Activityavec startActivityForResult(). Si vous lancez une opération
différente Activitypour accomplir différentes opérations, utilisez ce code pour identifier
les données spécifiques que vous récupérez.
Code de résultat: le code de résultat défini dans le fichier lancé Activity, généralement l'un
des RESULT_OK ou RESULT_CANCELED.
Les données d' intention: le Intentcontenant les données renvoyées par le
lancement Activity.
exemple :
public void onSubmit(View view) {
StringBuffer toppings = new
StringBuffer().append(getString(R.string.toppings_label));
if (((CheckBox) findViewById(R.id.checkbox1_chocolate)).isChecked()) {
toppings.append(getString(R.string.chocolate_syrup_text));
}
if (((CheckBox) findViewById(R.id.checkbox2_sprinkles)).isChecked()) {
toppings.append(getString(R.string.sprinkles_text));
}
if (((CheckBox) findViewById(R.id.checkbox3_nuts)).isChecked()) {
toppings.append(getString(R.string.crushed_nuts_text));
}
// Code to display the result...
}
RadioButton
@Override
protected void onCreate(Bundle savedInstanceState) {
// ... Rest of onCreate code ...
// Create the spinner.
Spinner spinner = findViewById(R.id.label_spinner);
if (spinner != null) {
spinner.setOnItemSelectedListener(this);
}
// Create ArrayAdapter using the string array and default spinner layout.
AlertDialog___DatePicker---- TimePicker
AlertDialog can show:
1. Title (optional)
2. Content area
3. Action buttons
alertDialog.setPositiveButton()
alertDialog.setNeutralButton()
alertDialog.setNegativeButton()
Sous Android, créer une boîte de dialogue passe par:
1. Instancier la classe AlertDialog.Builder pour construire l’interface avec les éléments
nécessaires (boutons, titre, icones,…)
2. Modifier les propriétés de l’objet de type AlertDialog.Builder (boutons, titre, icones,…)
3. Instancier un objet de type AlertDialog selon le AlertDialog.Builder adéquat
4. Afficher la boîte de dialogue
Up back
1. Bouton Haut pour la navigation ancestrale des frères et sœurs de premier niveau
vers le parent.
2. Bouton Haut pour la navigation ancestrale des frères et sœurs de deuxième niveau
vers l'écran enfant de premier niveau faisant office d'écran parent.
Navigation Drawer
Descendant navigation
1. Icon in app bar
2. Header
3. Menu items
TabLayout
1. Define the tab layout using TabLayout
2. Implement a Fragment and its layout for each tab
3. Implement a PagerAdapter from FragmentPagerAdapter or
FragmentStatePagerAdapter
4. Create an instance of the tab layout
5. Use PagerAdapter to manage screens (each screen is a Fragment)
6. Set a listener to determine which tab is tapped
Les étapes clés de la mise en œuvre des onglets sont les suivantes TabLayout:
1. Définissez la disposition des onglets. La classe principale utilisée pour afficher les
onglets est TabLayout. Il fournit une disposition horizontale pour afficher les
onglets. Vous pouvez afficher les onglets sous la barre d'applications.
2. Implémentez un Fragmentpour chaque écran de contenu d'onglet. A Fragmentest un
comportement ou une partie d'une interface utilisateur dans un
fichier Activity. C'est comme un mini- Activitydans le principal Activity, avec son
propre cycle de vie. L'un des avantages de l'utilisation d'un Fragmentpour chaque
contenu à onglets est que vous pouvez isoler le code pour gérer le contenu à onglets
dans le Fragment. Pour en savoir plus Fragment, consultez Fragments dans le guide
API.
3. Ajoutez un adaptateur de téléavertisseur. Utilisez la PagerAdapterclasse pour
remplir des «pages» (écrans) à l'intérieur de a ViewPager, qui est un gestionnaire de
mise en page qui permet à l'utilisateur de parcourir les écrans de données à gauche
et à droite. Vous fournissez une implémentation d'un PagerAdapterpour générer les
écrans que le Viewmontre. ViewPagerest le plus souvent utilisé en conjonction
avec Fragment, qui est un moyen pratique de fournir et de gérer le cycle de vie de
chaque écran.
4. Créez une instance de la mise en page de l'onglet et définissez le texte de chaque
onglet.
5. Permet PagerAdapterde gérer les écrans ("pages"). Chaque écran est représenté par
le sien Fragment.
6. Définissez un écouteur pour déterminer quel onglet est touché.
RecycleView