Structure du Projet

Tutoriels Android

Nouveau jeu multijoueurs !

Utilisez votre Smartphone comme manette, ouvrez le site BoomBoom Fighter, et explosez vos amis !

Structure du Projet Android






Architecture basique d'une application Android


Vous vous demandez sans doute toujours ce qu'est une activité?

Pour vous aider à comprendre, je vais prendre l'idée d'un site Web.
Un Site Web est composé de plusieurs pages. Voyez une activité comme une page d'un site web. Lorsque l'on change de page, on change d'activité.
Un Site Web a une page d'accueil, une application Android a une activité principale.
Nous verrons en fin de paragraphe qu'est ce qui fait d'une activité l'activité principale.



Une activité, vis-à-vis du code, est séparée en 2 morceaux: un fichier XML, et un fichier JAVA.

Le fichier XML (par exemple "main.xml") permet la déclaration des éléments de l'interface (par exemple un bouton), ainsi que ses attributs (le bouton aura pour id "bouton1", pour texte "ceci est un bouton", etc.).

Le fichier JAVA (par exemple "TestActivity.java") permet le contrôle des éléments déclarés dans le fichier XML ("main.xml"). Il est directement lié au XML par une ligne de code, qui lui permet de se dire "Je dois aller chercher mes éléments dans ce fichier XML, je ne vois que les éléments de ce XML".
Les éléments sont donc déclarés aussi dans le fichier JAVA (je déclare un bouton en java, et avec une ligne de code je vais lui dire qu'il "représentera" le bouton "bouton1" du fichier "main.xml"). A partir de là, il est possible de définir des écouteurs sur ce bouton dans la classe Java.

Il est également possible de définir les attributs du bouton directement depuis le fichier java.

Voici donc l'architecture basique d'une application Android, c'est-à-dire sans Base de Données (voir chapitre Bases de Données).



Cela a été utile? 42 1    -    Une suggestion? (facultatif)


Présentation de votre premier projet


Voici donc votre projet Android:

TestActivity.java: Vous avez tout d'abord votre classe TestActivity.java qui correspond à l'activité principale créée avec le projet (car liée au fichier main.xml).

R.java: Fichier contenant les "paramètres" de l'application. Il se génère automatiquement, vous ne devez pas y toucher, au risque de buger l'appli.

Bin: Le dossier "Bin" contient les binaires de l'application. Comme pour le fichier R.java, ils ne doivent pas être touchés - ne pas les commit sur un SVN non plus, chaque membre d'un groupe de projet a des binaires différents (risque de bugs).

Res: Ce dossier contient les images utilisées dans le projet, les XML du projet (les fichiers XML servent à définir l'interface de l'application) & le dossier "values" (voir plus bas).

Drawable-XXX: Ces dossiers contiennent les images de l'application. Tous ces dossiers devraient, dans l'idéal, contenir les mêmes images, mais avec des résolutions différentes. En effet, selon la résolution de l'écran utilisé, les images seront tirées du dossier correspondant.

Layout: Ce dossier contient les XML de l'application pour les interfaces. Vous pouvez déjà voir le main.xml, qui correspond à l'interface de l'activité principale de l'application.

Values: ce dossier contient aussi des XML, mais qui servent à stocker des chaînes de caractères. Nous verrons par la suite à quoi cela peut servir.

AndroidManifest.xml: fichier XML dans lequel on déclare les différentes activités de l'application, et certains paramètres de l'application (par exemple si on autorise la rotation de l'application, le sens de l'application (vertical, horizontal), l'icône de l'application, etc..).


Les fichiers restants sont générés automatiquement, ils n'ont pas d'intérêts particuliers.


Activité Principale: on définit une activité comme étant la principale dans le fichier AndroidManifest.xml; elle est liée au fichier main.xml - voir Un peu de code? avec le AndroidManifest.xml.

Pour les autres activités (par exemple RechercheActivity.java), il suffit de définir d'autres .xml (recherche.xml).

Cela a été utile? 20 0    -    Une suggestion? (facultatif)


Un peu de code?


TestActivity.java:

package test.activities;

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

public class TestActivity extends Activity {
    /** Called when the activity is first created. */
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
    }
}
  • La classe "extends Activity" pour la définir comme une activité Android;
  • La classe n'a pas de constructeur TestActivity(), mais un onCreate() - Obligatoire! - c'est en fait le constructeur de l'activité;
  • "super.onCreate(savedInstanceState);" est obligatoire et systématique pour une activité;
  • "setContentView(R.layout.main);" permet à TestActivity de dire "Je suis lié au fichier main.xml dans le dossier layout!";


main.xml:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:orientation="vertical" >

    <TextView
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:text="@string/hello" />

</LinearLayout>
  • On a ici deux éléments définis: un LinearLayout & un TextView.
    • Le LinearLayout représente la fenêtre entière de l'activité;
    • Le textView représente une zone de texte;
  • Les attributs "android:layout_height" et "android:layout_width" permettent de déterminer la hauteur et la largeur des éléments;
  • "android:orientation" permet de définir le type d'empilement des éléments dans le LinearLayout (verticaux ou horizontaux);
  • "android:text" permet de définir le texte du TextView;
  • "@strings/hello" signifie "Je vais chercher la chaîne de caractères ayant pour ID "hello" dans le fichier strings.xml"; Ce fichier est contenu dans le dossier "values" (cf. Présentation de votre premier projet).


strings.xml:

1
2
3
4
5
6
7
<?xml version="1.0" encoding="utf-8"?>
<resources>

    <string name="hello">Hello World, TestActivity!</string>
    <string name="app_name">Test</string>

</resources>
  • Ce fichier permet de définir diverses chaînes de caractères, ayant un nom (id); Elles peuvent être appelées par leur nom à n'importe quel endroit dans le code (xml ou java) - voir ci-dessus, main.xml pour l'exemple.


AndroidManifest.xml:

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="test.activities"
    android:versionCode="1"
    android:versionName="1.0" >

    <uses-sdk android:minSdkVersion="7" />

    <application
        android:icon="@drawable/ic_launcher"
        android:label="@string/app_name" >
        <activity
            android:name=".TestActivity"
            android:label="@string/app_name" >
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />

                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>
    </application>

</manifest>
  • "android:icon" définit l'icône de l'application;
  • "android:label" définit le nom de l'application - en l'occurence ici la chaîne de caractères ayant pour nom "app_name" dans le fichier strings.xml;
  • Le manifeste est généré automatiquement lors de la création du projet. Il faut cependant compléter le fichier au cours du développement:
    • Ajouter une activité - définir son nom (name) & l'application dont elle fait partie (label);
    • Action android:name="android.intent.action.MAIN" précise qu'il s'agit de l'activité principale. Si ce n'est pas le cas, remplacer 'MAIN' par 'INSERT'.
    • Category android:name="android.intent.category.LAUNCHER" précise qu'il s'agit de l'activité de lancement (principale). Si ce n'est pas le cas, remplacer 'LAUNCHER' par 'DEFAULT'.

Cela a été utile? 24 0    -    Une suggestion? (facultatif)


Aller à la rubrique suivante: Interfaces





*Les commentaires seront validés avant d'apparaître.

Commentaires

4 commentaire(s)
Merci c'est super ! Cela nous permet de savoir comment fonctionnne une application android :)
2015-03-27 09:46:25 - Par Androidoman
Merci ce tuto m'a beacoup aidé à  comprendre le monde d'android, dans sa structure !
2015-04-01 16:04:55 - Par Poquelin69
Je vous en prie ;-) Si vous avez des suggestions n'hésitez pas.
2015-04-06 18:59:42 - Par François
merci à vous le cours est très interessant et facile à  comprendre
2015-09-08 18:14:54 - Par engeneer
Mon profil LinkedIn Me suivre sur Twitter

Copyright FC © 2012-2014