Passons aux choses sérieuses ! :D

Commençons par créer un nouveau projet Android dans Eclipse:

File -> new -> Android project ou sur l’icône surlignée ci-dessous

Vous obtenez cet écran:

Ensuite remplissez les champs comme ceci:

  • Project name: HelloAndroid
  • Application name: Hello, Android
  • Package name: com.exemple.helloAndroid (ou votre propre namespace)
  • Create Activity: HelloAndroid
  • Min SDK Version: 3
  • Cliquez sur Finish.

Voici en détail ce que sont ces données:

Project Name
C’est le nom du projet dans Eclipse mais aussi le nom du dossier où seront contenus les fichiers du projet.
Application Name
C’est le nom de l’application qui apparaîtra dans le téléphone.
Package Name
C’est le nom du package principal (Selon les même règles que les packages en java). Cela vous permet d’organiser les classes de votre projet. Ce package sera celui où se trouvera l’activité par défaut.
Create Activity
C’est le nom de l’activité par défaut qui sera générée par le plugin.
Cela sera une sous-classe de Activity. Nous reviendrons un peu plus tard sur les activités.
Min SDK Version
Cette valeur spécifie la version minimale d’Android que devra avoir le téléphone pour exécuter l’application.

Voilà vous avez créé votre premier projet Android :D !

Nous allons maintenant parler de la hiérarchie des fichiers d’un projet Android.

Nous avons cette hiérarchie:

Nous allons détailler un peu tout ça:

src: ce dossier contient toutes les classes du projet. Ainsi on y retrouvera tous les packages et fichiers .java. Nous y trouvons aussi le fichier HelloAndroid.java qui n’est autre que notre activité par défaut qui sera lancée au démarrage de l’application.

gen: Ce dossier contient le fichier R.java. Ce fichier renferme des données qui seront chargées sur le mobile lors de la compilation de votre projet. Les données incluses dans ce dossier sont par exemple, des fichiers texte décrivant la licence de votre application, des fichiers audio ou vidéo, etc.

res: Ce dossier regroupe l’ensemble des fichiers ressources du projet. C’est ce dossier qui est utilisé par ADT pour créer le fichier R.java. Ce dossier contient lui même des sous dossiers regroupant les fichier ressource par type.
Ces dossiers sont:

  • drawable : regroupera l’ensemble de vos images (png, jpg, gif).
  • layout : Android permet de définir les interfaces dans des fichiers XML. (Comme en .net avec le XAML). Nous verrons ceci un peu plus loin. Ce dossier contient donc l’ensemble des fichiers xml décrivant les interfaces.
  • values : ce dossier contient également un ensemble de fichiers xml stockant les valeurs utilisées par votre application.
    On peut, par exemple, y mémoriser des chaines de caractères (strings.xml), des tableaux (arrays.xml), des couleurs, des dimensions, etc…

Pour finir, tout projet Android contient un fichier nommé AndroidManifest.xml qui définit la configuration de votre application au système Android. Ce fichier définit par exemple, le nom, l’icone (par défaut drawable/icon.png), la version minimale du système nécessaire à l’exécution de l’application, les activités, les services, etc. de votre application.

Passons maintenant à notre classe HelloAndroid.java:

package com.exemple.helloAndroid;

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

public class HelloAndroid extends Activity {
    /** Called when the activity is first created. */
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
    }
}

Celle-ci définit une activité. Une activité correspond à un écran. Si une application se compose de plusieurs écrans, elle a une activité pour chaque écran. Chaque activité est une classe qui étend la classe de base Activity. Elle dispose d’une interface utilisateur graphique faite de vues (views) et elle répond à des évènements (events). Quand on change d’écran, on lance une nouvelle activité. Celle-ci peut retourner une valeur. Par exemple, si une activité permet de choisir quelque chose, un texte, une image, elle retourne ce qu’elle a choisi.

Nous allons la modifier pour pouvoir afficher notre petit message:

Commençons par modifier le fichier layout situé dans res -> layout -> main.xml:

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

Ensuite on passe à la classe HelloAndroid:

package com.exemple.helloAndroid;

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

public class HelloAndroid extends Activity {
	/** Called when the activity is first created. */
	@Override
	public void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.main);
                // Nous alllons chercher notre composant Textview via son ID puis nous lui
                // fixons le texte
		((TextView)findViewById(R.id.tv_message)).setText("Hello World !");
                // Nous aurions pu faire ainsi en stockant la référence du composant:
                /*
                TextView tv = (TextView)findViewById(R.id.tv_message);
                tv.setText("Hello World !");
                */
	}
}

Et voilà nous avons notre message.

Mais ceci est trop courant ;) . Nous allons ainsi rajouter une image à ce texte.

Voici le nouveau main.xml:

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

    <ImageView
        android:src="@drawable/icon"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_gravity="center"
    />

    <TextView
        android:id="@+id/tv_message"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text=""
        android:layout_gravity="center"
    />

</LinearLayout>

Et voilà ! C’est quand même plus joli avec des couleurs ! :D

Nous allons maintenant afficher le texte suite à un click sur un bouton.

Voici le nouveau code:

Le ficher layout:

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

    <ImageView
        android:src="@drawable/icon"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_gravity="center"
    />
    <TextView
        android:id="@+id/tv_message"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text=""
        android:layout_gravity="center"
    />
    <Button
        android:id="@+id/bt_afficher_message"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="Afficher le message"
        android:layout_gravity="center"
    />

</LinearLayout>

La nouvelle classe:

package com.exemple.helloAndroid;

import android.app.Activity;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.TextView;

public class HelloAndroid extends Activity {
	/** Called when the activity is first created. */
	@Override
	public void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState); 
            setContentView(R.layout.main);
            // On associe l'évènement au bouton
            (findViewById(R.id.bt_afficher_message)).setOnClickListener(bt_click);
	}

	// On créé un évènement
	public Button.OnClickListener bt_click = new Button.OnClickListener(){

		@Override
		public void onClick(View v) {
			((TextView)findViewById(R.id.tv_message)).setText("Hello World !");
		}

	};
}

A bientôt dans un prochain tutoriel ! ;)