Android et les images

Ajoutons des images à nos applications

Android et les images
Sommaire

Ajoutons des images à tout ça



Téléchargez ces images ou utilisez les vôtres. Nous allons les intégrer à une application avec des images cliquables.

Créez un projet qui s’appel “Droid Cafe” en choisissant Basic Activity cette fois ci.

Nous ne toucherons pas à activity_main.xml mais à content_main.xml.

Dans content_main.xml commencez par supprimer le fragment (nous aborderons ces notions bien plus tard).

Remplacez le par un TextView :

<TextView
    android:id="@+id/textintro"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_marginTop="8dp"
    android:text="Les Desserts du Café"
    android:textSize="24sp"
    android:textStyle="bold"
    app:layout_constraintEnd_toEndOf="parent"
    app:layout_constraintStart_toStartOf="parent"
    app:layout_constraintTop_toTopOf="parent" />

Copiez collez les 3 images dans le dossier res/drawable puis glissez depuis la palette une ImageView L’IDE devrait vous proposer de choisir une ressource à lui associer. Choisissez le donuts. Ajoutez une contrainte liée au titre et réglez les 2 contraintes à 24dp.

Vous devriez avoir:

<ImageView
    android:id="@+id/donut"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_marginStart="24dp"
    android:layout_marginTop="24dp"
    app:layout_constraintStart_toStartOf="parent"
    app:layout_constraintTop_toBottomOf="@+id/textintro"
    app:srcCompat="@drawable/donut_circle" />

et visuellement

donut1

Ajoutez une description en attribut et envoyez la dans les strings.xml. Vous pourrez ensuite ajouter un TextView et reprendre cette déscription directement. Je vous laisse faire la mise en page. Mais je vous donne quand même le résultat en xml si vous êtes bloqués.

<TextView
        android:id="@+id/textintro"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_marginTop="8dp"
        android:text="Les Desserts du Café"
        android:textSize="24sp"
        android:textStyle="bold"
        app:layout_constraintEnd_toEndOf="parent"
        app:layout_constraintStart_toStartOf="parent"
        app:layout_constraintTop_toTopOf="parent" />

    <ImageView
        android:id="@+id/donut"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_marginStart="24dp"
        android:layout_marginTop="24dp"
        android:contentDescription="Les Donuts sont fourrés et avec un joli glaçage"
        app:layout_constraintStart_toStartOf="parent"
        app:layout_constraintTop_toBottomOf="@+id/textintro"
        app:srcCompat="@drawable/donut_circle" />

    <ImageView
        android:id="@+id/ice_cream_sandwich"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_marginStart="24dp"
        android:layout_marginTop="24dp"
        android:contentDescription="Les sandwiches à la crème glacée ont des gaufrettes au chocolat et une garniture à la vanille."
        app:layout_constraintStart_toStartOf="parent"
        app:layout_constraintTop_toBottomOf="@+id/donut"
        app:srcCompat="@drawable/icecream_circle" />

    <ImageView
        android:id="@+id/froyo"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_marginStart="24dp"
        android:layout_marginTop="24dp"
        android:contentDescription="Le FroYo est un yogourt glacé libre-service de première qualité."
        app:layout_constraintStart_toStartOf="parent"
        app:layout_constraintTop_toBottomOf="@+id/ice_cream_sandwich"
        app:srcCompat="@drawable/froyo_circle" />

    <TextView
        android:id="@+id/donut_Description"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_marginStart="24dp"
        android:layout_marginTop="24dp"
        android:layout_marginEnd="24dp"
        android:text="TextView"
        app:layout_constraintEnd_toEndOf="parent"
        app:layout_constraintHorizontal_bias="0.503"
        app:layout_constraintStart_toEndOf="@+id/donut"
        app:layout_constraintTop_toTopOf="@+id/donut" />

    <TextView
        android:id="@+id/ice_cream_sandwichs_description"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_marginStart="24dp"
        android:layout_marginTop="24dp"
        android:layout_marginEnd="24dp"
        android:text="TextView"
        app:layout_constraintEnd_toEndOf="parent"
        app:layout_constraintStart_toEndOf="@+id/ice_cream_sandwich"
        app:layout_constraintTop_toTopOf="@+id/ice_cream_sandwich" />
    <TextView
        android:id="@+id/froyo_decription"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_marginStart="24dp"
        android:layout_marginTop="24dp"
        android:layout_marginEnd="24dp"
        android:text="TextView"
        app:layout_constraintEnd_toEndOf="parent"
        app:layout_constraintStart_toEndOf="@+id/froyo"
        app:layout_constraintTop_toTopOf="@+id/froyo" />

Pensez bien à extraire les textes dans strings.xml et de les récupérer dans vos TextView pour obtenir le visuel suivant:

visuel droid cafe

Un peu d’action


vidéo à venir


Dans un premier temps, nous allons afficher un Toast qui affiche quelle image a été cliquée.

Commençons par écrire nos messages dans strings.xml

<string name="donut_order_message">Vous avez commandé un Donut</string>
<string name="ice_cream_order_message">Vous avez commandé une Glace</string>
<string name="froyo_order_message">Vous avez commandé un Froyo</string>

Dans MainActivity ajoutons la métohde displayToast().

public void displayToast(String message){
    Toast.makeText(getApplicationContext(), message,Toast.LENGTH_SHORT).show();
    }

Cette méthode va afficher un toast en bas de l’écran reprenant le message que nous voulons afficher.

Remarquez que makeText prend 3 paramètres: le context, le message et le type d’alerte.

On va maintenant définir les méthodes liées à nos boutons. J’en écris une, à vous d’écrire les autres.

/**
     * Affiche un message disant que le donut a été sélectionné
     * @param view
     */
    public void showDonutOrder(View view){
        displayToast(getString(R.string.donut_order_message));
    }

Enfin nous allons lier nos images aux méthodes en ajoutant l’attribut onClick à nos images.

android:onClick="showDonutOrder"

Faites ça pour les 3 images.

Une nouvelle activité

Pour le principe, nous avons un FloatingActionButton alors on va l’utiliser. Ajoutez une nouvelle activité et nommez la OrderActivity.java

Modifiez la méthode onClick() pour obtenir:

 fab.setOnClickListener(new View.OnClickListener() {
    @Override
    public void onClick(View view) {
        Intent intent = new Intent(MainActivity.this,OrderActivity.class);
        startActivity(intent);
            }
        });

Ainsi, maintenant, quand on clique sur le fab. On ouvre une nouvelle activité.