Dialogue de sélection de date et heure Android

Les sélecteurs de date et d’heure Android sont largement utilisés dans les applications Android. Dans ce tutoriel, nous allons démontrer l’utilisation d’un sélecteur de date et d’un sélecteur d’heure dans notre application Android. Ces composants sont utilisés pour sélectionner la date et l’heure dans une interface utilisateur personnalisée. Nous utiliserons les classes DatePickerDialog et TimePickerDialog avec la classe Calendar dans le code de notre application Android pour y parvenir.

DatePickerDialog et TimePickerDialog Android

Bien qu’un sélecteur de date et un sélecteur d’heure puissent être utilisés comme des widgets indépendants, ils occupent plus d’espace à l’écran. Il est donc préférable de les utiliser dans une boîte de dialogue. Heureusement, Android nous fournit ses propres classes DatePickerDialog et TimePickerDialog. Les classes DatePickerDialog et TimePickerDialog ont respectivement des méthodes de rappel onDateSetListener() et onTimeSetListener(). Ces méthodes de rappel sont invoquées lorsque l’utilisateur a terminé de remplir la date et l’heure respectivement. La classe DatePickerDialog est composée d’un constructeur à 5 arguments avec les paramètres énumérés ci-dessous.

  1. Contexte : il nécessite le contexte de l’application
  2. Fonction de rappel : onDateSet() est invoquée lorsque l’utilisateur définit la date avec les paramètres suivants :
  • int year : Il stockera l’année actuellement sélectionnée à partir de la boîte de dialogue
  • int moisDeLAnnee : Il stockera le mois actuellement sélectionné dans la boîte de dialogue
  • int jourDuMois : Il stockera le jour actuellement sélectionné dans la boîte de dialogue
  1. int mYear : Il affiche l’année actuelle qui est visible lorsque la boîte de dialogue apparaît
  2. int mMonth : Il affiche le mois actuel qui est visible lorsque la boîte de dialogue apparaît
  3. int mDay : Il affiche le jour actuel qui est visible lorsque la boîte de dialogue apparaît

La classe TimePickerDialog se compose d’un constructeur à 5 arguments avec les paramètres énumérés ci-dessous.

  1. Contexte : Il nécessite le contexte de l’application
  2. Fonction de rappel : onTimeSet() est invoquée lorsque l’utilisateur définit l’heure avec les paramètres suivants:
  • int heureDuJour : Il stockera l’heure actuellement sélectionnée dans la boîte de dialogue
  • int minute : Il stockera la minute actuellement sélectionnée dans la boîte de dialogue
  1. int mHours : Il affiche l’heure actuelle qui est visible lorsque la boîte de dialogue apparaît
  2. int mMinute : Il affiche la minute actuelle qui est visible lorsque la boîte de dialogue apparaît
  3. boolean false : Si elle est définie sur false, l’heure est affichée au format 24 heures, sinon non

Exemple de structure de projet pour le sélecteur de date et d’heure Android

Code de projet pour le sélecteur de date et d’heure Android

Le fichier activity_main.xml contient deux boutons pour invoquer les dialogues de sélection de date et d’heure et définir l’heure sélectionnée par l’utilisateur dans les deux vues EditText. Le code XML est donné ci-dessous. activity_main.xml

<RelativeLayout xmlns:android="https://schemas.android.com/apk/res/android"
    xmlns:tools="https://schemas.android.com/tools" android:layout_width="match_parent"
    android:layout_height="match_parent" android:paddingLeft="@dimen/activity_horizontal_margin"
    android:paddingRight="@dimen/activity_horizontal_margin"
    android:paddingTop="@dimen/activity_vertical_margin"
    android:paddingBottom="@dimen/activity_vertical_margin" tools:context=".MainActivity">

    <EditText
        android:layout_width="200dp"
        android:layout_height="wrap_content"
        android:id="@+id/in_date"
        android:layout_marginTop="82dp"
        android:layout_alignParentTop="true"
        android:layout_alignParentLeft="true"
        android:layout_alignParentStart="true" />

    <Button
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="SELECT DATE"
        android:id="@+id/btn_date"
        android:layout_alignBottom="@+id/in_date"
        android:layout_toRightOf="@+id/in_date"
        android:layout_toEndOf="@+id/in_date" />

    <EditText
        android:layout_width="200dp"
        android:layout_height="wrap_content"
        android:id="@+id/in_time"
        android:layout_below="@+id/in_date"
        android:layout_alignParentLeft="true"
        android:layout_alignParentStart="true" />

    <Button
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="SELECT TIME"
        android:id="@+id/btn_time"
        android:layout_below="@+id/btn_date"
        android:layout_alignLeft="@+id/btn_date"
        android:layout_alignStart="@+id/btn_date" />

</RelativeLayout>

La classe MainActivity.java est donnée ci-dessous:

package com.journaldev.datetimepickerdialog;

import android.app.DatePickerDialog;
import android.app.TimePickerDialog;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.widget.Button;
import android.widget.DatePicker;
import android.widget.EditText;
import android.widget.TimePicker;

import java.util.Calendar;

public class MainActivity extends AppCompatActivity implements
        View.OnClickListener {

    Button btnDatePicker, btnTimePicker;
    EditText txtDate, txtTime;
    private int mYear, mMonth, mDay, mHour, mMinute;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        btnDatePicker=(Button)findViewById(R.id.btn_date);
        btnTimePicker=(Button)findViewById(R.id.btn_time);
        txtDate=(EditText)findViewById(R.id.in_date);
        txtTime=(EditText)findViewById(R.id.in_time);

        btnDatePicker.setOnClickListener(this);
        btnTimePicker.setOnClickListener(this);

    }

    @Override
    public void onClick(View v) {

        if (v == btnDatePicker) {

            // Obtenir la date actuelle
            final Calendar c = Calendar.getInstance();
            mYear = c.get(Calendar.YEAR);
            mMonth = c.get(Calendar.MONTH);
            mDay = c.get(Calendar.DAY_OF_MONTH);


            DatePickerDialog datePickerDialog = new DatePickerDialog(this,
                    new DatePickerDialog.OnDateSetListener() {

                        @Override
                        public void onDateSet(DatePicker view, int year,
                                              int monthOfYear, int dayOfMonth) {

                            txtDate.setText(dayOfMonth + "-" + (monthOfYear + 1) + "-" + year);

                        }
                    }, mYear, mMonth, mDay);
            datePickerDialog.show();
        }
        if (v == btnTimePicker) {

            // Obtenir l'heure actuelle
            final Calendar c = Calendar.getInstance();
            mHour = c.get(Calendar.HOUR_OF_DAY);
            mMinute = c.get(Calendar.MINUTE);

            // Lancer le dialogue du sélecteur d'heure
            TimePickerDialog timePickerDialog = new TimePickerDialog(this,
                    new TimePickerDialog.OnTimeSetListener() {

                        @Override
                        public void onTimeSet(TimePicker view, int hourOfDay,
                                              int minute) {

                            txtTime.setText(hourOfDay + ":" + minute);
                        }
                    }, mHour, mMinute, false);
            timePickerDialog.show();
        }
    }
}

Dans le code ci-dessus, nous avons créé un objet Calendar en utilisant Calendar.getInstance() pour afficher la date et l’heure actuelles à l’aide des champs statiques correspondants. Note: Le calendrier d’affichage et l’horloge sont les thèmes d’interface utilisateur par défaut fournis dans le thème AppCompat. Voici la sortie produite par notre exemple d’application de sélection de date et d’heure Android. Cela met fin à l’exemple de tutoriel de boîte de dialogue de sélection de date et d’heure Android. Vous pouvez télécharger le projet final Android DateTimePickerDialog à partir du lien ci-dessous.

Télécharger le projet de sélection de date et d’heure Android

Source:
https://www.digitalocean.com/community/tutorials/android-date-time-picker-dialog