Utilisation de base de plusieurs autres boîtes de dialogue courantes


Introduction à cette section :

Dans la dernière section, nous avons étudié la classe parent de Dialog : AlertDialog, et dans cette section, nous en apprendrons quelques-unes couramment utilisées. Les utilisations de base de Dialog sont : ProgressDialog (boîte de dialogue de la barre de progression), DatePickerDialog (boîte de dialogue de sélection de date) et TimePickerDialog (boîte de dialogue de sélection d'heure)~, sans plus tarder, commençons cette section~


1 Utilisation de base de ProgressDialog (boîte de dialogue de barre de progression) <. 🎜>

Il existe deux façons de créer une boîte de dialogue de barre de progression :

  • 1 Appelez directement la méthode statique show() fournie par ProgressDialog pour l'afficher.
  • 2. Créez ProgressDialog, puis définissez les paramètres de la boîte de dialogue, et enfin show() sort

Exemple de code.  :

Exécution des rendus :

1.gif

Code d'implémentation clé :

MainActivity .java :

classe publique MainActivity étend AppCompatActivity implémente View.OnClickListener{

bouton privé btn_one;
bouton privé btn_two;
bouton privé btn_trois;
privé ProgressDialog pd1 = null;
private ProgressDialog pd2 = null;
private final static int MAXVALUE = 100;
private int progressStart = 0;
private int add = 0;
private Context mContext = null;


//Définissez un gestionnaire pour la progression de la mise à jour. Étant donné que l'interface ne peut être mise à jour que par le thread principal, Handler doit être utilisé pour transmettre des informations
final Handler hand = new Handler()
{
@ Override
public void handleMessage(Message msg) {
//Ici, si le code du message reçu est 123
if(msg.what == 123)
{
                         //Définir la barre de progression La valeur actuelle de
pd2.setProgress(progressStart);
}
//Si la valeur actuelle est supérieure ou égale à la valeur maximale de la barre de progression, appelez la méthode dismiss() pour fermer la boîte de dialogue
if(progressStart >= MAXVALUE)
                                                                                                                          🎜> protected void onCreate(Bundle savingInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main) ;
mContext = MainActivity.this;
bindViews();
}

private void bindViews() {
btn_one = (Bouton) findViewById(R.id.btn_one);
btn_two = (Bouton) findViewBy Id(R. id .btn_two);
btn_two = (Button) findViewById(R.id.btn_two);
btn_one.setOnClickListener(this);
btn_two.setOnClickListener(this);
btn_two.setOnClickListener(this); ) ;
>


@Override
public void onClick(View v) {
switch (v.getId()){
cas R.id.btn_one :
                //Les paramètres ici sont le contexte, le titre, le contenu, s'il faut afficher la progression, s'il peut être fermé avec le bouton d'annulation Après...",false,true);
break;
case R.id.btn_two :
pd1 = new ProgressDialog(mContext);
//Définissez le titre, le contenu et s'il faut l'utiliser en séquence. Le bouton Annuler est désactivé et s'il faut afficher la progression
pd1. setTitle("Le logiciel est en cours de mise à jour");
pd1.setMessage("Le logiciel est en cours de mise à jour, veuillez patienter...");
pd1.setCancelable( true);
//Voici le style de définition de la barre de progression. HORIZONTAL est une barre de progression horizontale et SPINNER est une barre de progression circulaire
pd1.setProgressStyle(ProgressDialog.STYLE_HORIZONTAL);
pd1.setIndeterminate(true);//Appelez la méthode show() pour afficher le ProgressDialog
pd1.show();
break;
case R.id.btn_two:
// Propriétés d'initialisation
progressStart = 0;
           add = 0; pd2.setMax(MAXVALUE);
pd2.setTitle("Lecture du fichier ");
pd2.setMessage("Le fichier est en cours de chargement, veuillez patienter...");
//La barre de progression ne peut pas être fermée en appuyant sur le bouton Annuler
pd2.setCancelable(false) ;
              pd2.setProgressStyle(ProgressDialog.STYLE_HORIZONTAL);
              pd2.setIndeterminate(false);                           new Thread()
                                       > public void exécuter()
{
while(progressStart < MAXVALUE)
Oui, vous pouvez écrire
selon vos besoins progressStart = 2 * usetime();
Envoyez le code d'information au Handle pour créer l'interface de mise à jour
hand.sendemptymessage (123);
}
}
} .start (); 🎜>
//Définissez ici une méthode qui prend du temps :
private int usetime() {
add++;
try{
Thread.sleep(100);
}catch ( InterruptedException e) {
e.printStackTrace();
}
return add;
>
}

Le code est relativement simple, et nous avons déjà entendu parler de Progress auparavant, je n'entrerai donc pas dans les détails ici ~


2.DatePickerDialog (boîte de dialogue de sélection de date) et TimePickerDialog (heure boîte de dialogue de sélection) Boîte)

Laissez-moi d'abord vous expliquer quelque chose : Date/TimePickerDialog permet uniquement aux utilisateurs de sélectionner la date et l'heure pour l'heure du système Android, La date n'a aucun impact. Google n'a pas annoncé l'API pour les paramètres de date et d'heure du système. Si vous souhaitez le définir dans l'application, vous devez recompiler le code source du système Android, ce qui est très gênant !

Les méthodes de construction des deux sont très similaires : DatePickerDialog(Contexte; DatePickerDialog.OnDateSetListener() auditeur; année; mois; jour)
TimePickerDialog (Contexte ; écouteur TimePickerDialog.OnTimeSetListener() ; heure, minute, s'il faut utiliser l'horloge sur 24 heures)

Exemple de code :

En cours d'exécution rendu

2.gif

Code d'implémentation des clés

MainActivity.java

public class MainActivity étend AppCompatActivity implémente View.OnClickListener{

    private Button btn_date;
    private Button btn_time;
    private String result = "";


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

    private void bindViews() {
        btn_date = (Bouton) findViewById(R.id.btn_date);
        btn_time = (Bouton) findViewById(R.id.btn_time);


        switch (v.getId()){
             case R.id.btn_date:
                Calendar cale1 = Calendar.getInstance();
                new DatePickerDia log(MainActivity.this,new DatePickerDialog.OnDateSetListener() {
                    @Override
                    public void onDateSet(D atePicker view, int year, int monthOfYear,
                                         int dayOfMonth) {
                       //这里获取到的月份需要加上1哦~
                        result += "你选择的是"+year+"年"+(monthOfYear+1)+"月"+dayOfMonth+"日";
                       Toast.makeText(getApplicationContext(), result, Toast.LENGTH_SHORT).show( );
                    }
                }
                       ,cale1.get(Calendar.YEAR)
                         ,cale1.get(Calendar.MONTH)
                        ,cale1.get(Calendar.DAY_OF_MONTH)).show( );
                break;
            case R.id.btn_time:
                Calendar cale2 = Calendar.getInstance();
                new Time PickerDialog(MainActivity.this, new TimePickerDialog.OnTimeSetListener() {
                    @ Override
                    public void onTimeSet(TimePicker view, int hourOfDay, int minute) {
                        result = " ;
                         result += "您选择的时间是:"+hourOfDay+"时"+minute+"分" ;
                        Toast.makeText(getApplicationContext(), result, Toast.LENGTH_SHORT).show();
}
                          , cale2.get(Calendar.HOUR_OF_DAY),  cale2.get((Calendar.MINUTE), true).show();       🎜>}


Le code est également très simple, donc je ne vais pas l'expliquer ~
3. Téléchargement du code :

DialogDemo.zip

DialogDemo1.zip

Résumé de cette section :


D'accord, cette section présente trois boîtes de dialogue couramment utilisées. Par rapport à la version 4.x précédente, ces contrôles natifs de 5.0 , C'est évidemment beaucoup plus joli~ C'est tout, merci~