• Aucun résultat trouvé

Création d'un projet

Une fois Eclipse démarré, cliquez sur File, puis New et enfin Android Application Projet, comme montré sur cette image :

Prenez ce chemin

là pour créer un nouveau projet pour Android

Cet écran vous permettra de créer votre premier projet pour Android

Tous ces champs nous permettent de définir certaines caractéristiques de notre projet :

Tout d'abord, vous pouvez choisir le nom de votre application avec Application name. Il s'agit du nom qui apparaîtra sur l'appareil et sur Google Play pour vos futures applications ! Choisissez donc un nom qui semble à la fois judicieux, assez original pour attirer l'attention et qui reste politiquement correct au demeurant.

Project name est le nom de votre projet pour Eclipse. Ce champ n'influence pas l'application en elle-même, il s'agit juste du nom sous lequel Eclipse la connaîtra. Le vrai nom de notre application, celui que reconnaîtra Android et qui a été défini dans Application name, peut très bien n'avoir aucune similitude avec ce que vous mettrez dans ce champ. Mais pour vous y retrouver, mieux vaut garder une certaine cohérence.

Il faudra ensuite choisir dans quel package ira votre application, je vous ai déjà expliqué l'importance des packages précédemment. Sachez que ce package agira comme une sorte d'identifiant pour votre application sur le marché

d'applications, alors faites en sorte qu'il soit unique et il devra être constant pendant toute la vie de votre application. En général on se base sur le nom de domaine de son entreprise pour le constitué, c'est pourquoi il commence par

com.siteduzero chez moi.

Et pourquoi tu as omis les accents dans ces champs ?

La programmation est un monde profondément anglophone, et les anglais ne connaissent pas nos caractères avec accent. Mettre un "é" dans un mot c'est comme mettre un caractère chinois pour eux ! Ils ne le connaissent pas. Donc pour être sûr de ne pas avoir de problème, ne mettez pas d'accent.

Minimum Required SDK est la version minimale pour laquelle votre application est destinée. Cette information sera utilisée sur Google Play pour proposer vos applications à des clients. Ainsi, si vous mettez API 18, seuls les clients avec la toute nouvelle version de Jelly Bean pourront utiliser votre application, c'est-à-dire très très peu de gens. Il faut donc mettre un chiffre assez faible pour viser le plus de gens possible. Par exemple en mettant l'API 8, vous viserez 95% des gens qui vont sur Googe Play. A noter que ce n'est pas vraiment une obligation : si un utilisateur, qui est sous Android 1.6 (API 6), obtient votre application (parce que vous lui envoyez par exemple) et que cette application peut fonctionner sous l'API 6, alors il pourra installer l'application et l'utiliser, même si l'API 6 est plus vieille que l'API 8 et que vous avez précisé API 8 dans Minimum Required SDK.

L'option Target SDK est l'inverse de Minimum Required SDK, il s'agit de la version maximale sous laquelle votre application fonctionne. Elle exploite les mêmes règles que Minimum Required SDK.

La liste Compile With vous permet de choisir pour quelle version du SDK vous allez compiler votre application. Comme indiqué précédemment, on va choisir l'API 7. Il s'agit cette fois de la version minimale nécessaire pour utiliser votre application.

Cliquez sur Next pour passer à l'écran suivant :

L'écran suivant

Cette écran contient beaucoup d'options, mais je vais ne vous parler que de deux :

La première, intitulée Create custom launcher icon, ouvrira à la fenêtre suivante un outil pour vous aider à construire une icône pour votre application à partir d'une image préexistante.

La seconde, celle qui s'appelle Create activity, permet de vous faciliter le développement de l'application en faisant faire une partie par Eclipse.

Pour passer à la page suivante, cliquez sur Next. Si vous avez cliqué sur Create custom launcher icon, alors c'est la fenêtre visible à la figure suivante qui s'affichera.

Cet outil facilite la création d'icônes

Je vous invite à jouer avec les boutons pour découvrir toutes les fonctionnalités de cet outil. Cliquez sur Next une fois obtenu un résultat satisfaisant et vous retrouverez la page que vous auriez eue si vous n'aviez pas cliqué sur

Vous pouvez ici choisir une mise en page standard

Il s'agit ici d'un outil qui vous demande si vous voulez qu'Eclipse crée une activité pour vous, et si oui à partir de quelle mise en page. On va déclarer qu'on veut qu'il crée une activité, cliquez sur la case à gauche de Create Activity, mais on va sélectionner BlankActivity parce qu'on veut rester maître de notre mise en page. Cliquez à nouveau sur Next. Dans la fenêtre représentée à la figure suivante, il faut déclarer certaines informations relatives à notre nouvelle activité :

Permet de créer une première activité facilement

Ici encore une fois, on fait face à trois champs à renseigner :

Activity Name permet d'indiquer le nom de la classe Java qui contiendra votre activité, ce champ doit donc respecter la syntaxe Java standard.

Le champ suivant, Layout Name, renseignera sur le nom du fichier qui contiendra l'interface graphique qui correspondra à cette activité.

Enfin, en ce qui concerne Navigation Type, son contenu est trop complexe pour être analysé maintenant. Sachez qu'il permet de définir facilement comment s'effectueront les transitions entre plusieurs activités.

Pour finaliser la création, cliquez sur Finish.

Un non-Hello world!

Le Package Explorer permet de naviguer entre vos projets

On y trouve notre premier grand répertoire src/, celui qui contiendra tous les fichiers sources .java. Ouvrez le seul fichier qui s'y trouve, chez moi MainActivity.java (en double cliquant dessus). Vous devriez avoir un contenu plus ou moins

similaire à celui-ci : Code : Java package com.siteduzero.mapremiereapplication; import android.os.Bundle; import android.app.Activity; import android.view.Menu; import android.view.MenuItem; import android.support.v4.app.NavUtils; public class MainActivity extends Activity { @Override

protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState);

setContentView(R.layout.activity_main); }

@Override

public boolean onCreateOptionsMenu(Menu menu) {

// Inflate the menu; this adds items to the action bar if it is present.

getMenuInflater().inflate(R.menu.main, menu); return true;

} }

Ah ! On reconnaît certains termes que je viens tout juste d'expliquer ! Je vais prendre toutes les lignes une par une, histoire d'être certain de ne déstabiliser personne.

Code : Java

package sdz.chapitreUn.premiere.application;

Là, on déclare que notre programme se situe dans le package sdz.chapitreUn.premiere.application, comme expliqué précédemment. Si on veut faire référence à notre application, il faudra faire référence à ce package.

Code : Java import android.os.Bundle; import android.app.Activity; import android.view.Menu; import android.view.MenuItem; import android.support.v4.app.NavUtils;

On importe des classes qui se trouvent dans des packages différents : les classes Activity, Bundle, Menu et MenuItem qui se trouvent dans le même package, puis NavUtils. Chez moi, deux de ces packages sont inutiles car inutilisés dans le code, comme le montre la figure suivante.

Eclipse souligne les importations inutiles en jaune

Il existe trois manières de résoudre ces problèmes :

Vous pouvez tout simplement ignorer ces avertissements. Votre application fonctionnera toujours, et les performances n'en souffrirons pas. Mais je vois au moins deux raisons de le faire tout de même : pour entretenir un code plus lisible et pour éviter d'avoir par inadvertance deux classes avec le même nom, ce qui peut provoquer des conflits.

Supprimer les lignes manuellement, mais comme nous avons un outil puissant entre les mains, autant laisser Eclipse s'en charger pour nous !

Demander à Eclipse d'organiser les importations automatiquement. Il existe un raccourci qui fait cela : CTRL + SHIFT + O. Hop ! Tous les imports inutilisés sont supprimés !

Code : Java

public class MainActivity extends Activity { //…

}

Code : Java

@Override

public void onCreate(Bundle savedInstanceState) { //…

}

Le petit @Override permet d'indiquer que l'on va redéfinir une méthode qui existait auparavant dans la classe parente, ce qui est logique puisque vous saviez déjà qu'une activité avait une méthode void onCreate() et que notre classe héritait de Activity.

L'instruction @Override est facultative. Elle permet au compilateur d'optimiser le bytecode, mais, si elle ne fonctionne pas chez vous, n'insistez pas, supprimez-la.

Cette méthode est la première qui est lancée au démarrage d'une application, mais elle est aussi appelée après qu'une application a été tuée par le système en manque de mémoire ! C'est à cela que sert le paramètre de type Bundle :

S'il s'agit du premier lancement de l'application ou d'un démarrage alors qu'elle avait été quittée normalement, il vaut null.

Mais s'il s'agit d'un retour à l'application après qu'elle a perdu le focus et redémarré, alors il se peut qu'il ne soit pas null si vous avez fait en sorte de sauvegarder des données dedans, mais nous verrons comment dans quelques chapitres, puisque ce n'est pas une chose indispensable à savoir pour débuter.

Dans cette méthode, vous devez définir ce qui doit être créé à chaque démarrage, en particulier l'interface graphique. Code : Java

super.onCreate(savedInstanceState);

L'instruction super signifie qu'on fait appel à une méthode ou un attribut qui appartient à la superclasse de la méthode actuelle, autrement dit la classe juste au-dessus dans la hiérarchie de l'héritage — la classe parente, c'est-à-dire la classe Activity. Ainsi, super.onCreate fait appel au onCreate de la classe Activity, mais pas au onCreate de MainActivity. Il gère bien entendu le cas où le Bundle est null. Cette instruction est obligatoire.

L'instruction suivante : Code : Java

setContentView(R.layout.activity_main);

sera expliquée dans le prochain chapitre. En revanche, l'instruction suivante :

Code : Java

@Override

public boolean onCreateOptionsMenu(Menu menu) {

getMenuInflater().inflate(R.menu.activity_main, menu); return true;

}

En attendant, vous pouvez remplacer le contenu du fichier par celui-ci : Code : Java

//N'oubliez pas de déclarer le bon package dans lequel se trouve le fichier !

import android.os.Bundle; import android.app.Activity; import android.view.Menu;

import android.widget.TextView;

public class MainActivity extends Activity { private TextView texte = null;

@Override

protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState);

texte = new TextView(this);

texte.setText("Bonjour, vous me devez 1 000 000€."); setContentView(texte);

} }

Nous avons ajouté un attribut de classe que j'ai appelé coucou. Cet attribut est de type TextView, j'imagine que le nom est déjà assez explicite. Il s'agit d'une vue (View)… qui représente un texte (Text). J'ai changé le texte qu'affichera cette vue avec la méthode void setText(String texte).

La méthode void setContentView (View vue) permet d'indiquer l'interface graphique de notre activité. Si nous lui donnons un TextView, alors l'interface graphique affichera ce TextView et rien d'autre.