Exemples de code Android

Gestionnaire d'événement dans l'activité principale avec spécification de la méthode dans le fichier XML

Dans cet exemple, l'assignation du gestionnaire se fait dans le fichier XML de mise en page. La classe principale n'a plus besoin d'implémenter View.OnClickListener, mais le gestionnaire spécifié par l'attribut android:onClick doit obligatoirement être une méthode public void et avoir un paramètre de type View.

MainActivity.java

package net.codeandroid.couleur5;

import androidx.appcompat.app.AppCompatActivity;

import android.graphics.Color;
import android.os.Bundle;
import android.view.View;

import java.util.Random;

// Affiche une couleur aléatoire lorsque l'on clique sur un bouton (gestion du clic
// par l'activité principale avec assignation du gestionnaire dans le fichier de
// mise en page (XML).
public class MainActivity extends AppCompatActivity {

    // zone d'affichage de la couleur
    private View mZoneCouleur;
    // couleurs disponibles
    private int[] mCouleur = {
            Color.BLACK, Color.BLUE, Color.CYAN, Color.DKGRAY,
            Color.GRAY, Color.GREEN, Color.LTGRAY, Color.MAGENTA,
            Color.RED, Color.WHITE, Color.YELLOW};

    // point d'entrée de l'application
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);

        // chargement de la mise en page
        setContentView(R.layout.activity_main);

        // récupération des composants depuis le fichier de mise en page
        mZoneCouleur = findViewById(R.id.zone_couleur);
    }

    // gestionnaire
    public void colorer(View v) {
        // choisit aléatoirement une couleur
        Random generator = new Random();
        int index = generator.nextInt(mCouleur.length);

        // change la couleur d'arrière-plan de la vue
        mZoneCouleur.setBackgroundColor(mCouleur[index]);
    }
}

activity_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="match_parent"
    android:layout_height="match_parent">
    <Button
        android:layout_height="wrap_content"
        android:layout_width="match_parent"
        android:text="@string/label_bouton"
        android:onClick="colorer"/>
    <TextView
        android:id="@+id/zone_couleur"
        android:layout_height="match_parent"
        android:layout_width="match_parent"/>
</LinearLayout>

activity_main.xml

<?xml version="1.0" encoding="utf-8"?>
<resources>
    <string name="app_name">Couleur 5</string>
    <string name="label_bouton">Couleur magique</string>
</resources>