Android

ANDROID

Prácticas de diálogos


En esta practicas realizamos  un programa donde es muestre varios diálogos.
Creamos la pantalla principal donde se encuentran 6 botones que activarán los diferentes diálogos.



El clásico diálogo donde aparece una información(setPositiveButton).
public void FunBoton1(View view)
    {
        AlertDialog.Builder dialog = new AlertDialog.Builder(this);
          dialog.setMessage("Pueba de diálogo");
          dialog.setCancelable(false);
          dialog.setPositiveButton("OK", new DialogInterface.OnClickListener()
              {
              public void onClick(DialogInterface dialog, int which) 
                  {                 
                  dialog.dismiss();
                 }                       
            });
            dialog.show();
    }

El clásico ListView (setItems)
 public void FunBoton2(View view)
    {
        final CharSequence[] items = {"Red1", "Red2", "Red3"};
        AlertDialog.Builder builder = new AlertDialog.Builder(this); 
        builder.setTitle("Selecciona adaptador"); 
        builder.setItems(items, new DialogInterface.OnClickListener()
            {     
            public void onClick(DialogInterface dialog, int item)
                {         
                    Toast.makeText(getApplicationContext(), items[item], Toast.LENGTH_SHORT).show();     
                } 
        }); 
        AlertDialog alert = builder.create(); 
        alert.show();
    }


Parecido aListView (setSingleChoiceItems)
 public void FunBoton3(View view)
    {
        final CharSequence[] items = {"Red", "Green", "Blue"};         
        AlertDialog.Builder builder = new AlertDialog.Builder(this); 
        builder.setTitle("Pick a color"); 
        builder.setSingleChoiceItems(items, -1,new DialogInterface.OnClickListener()
            {     
            public void onClick(DialogInterface dialog, int item)
                {         
                    Toast.makeText(getApplicationContext(), items[item], Toast.LENGTH_SHORT).show();
                    alert.dismiss();
                } 
        }); 
        alert = builder.create();
        alert.show();
    }



Un cuadro de diálogo que se emplea para informar que se debe esperar mientras se está ejecutando algo. (ProgressDialog)
En este caso hago una espera de 2 segundos.
public void FunBoton4(View view)
     {
        final ProgressDialog MIdialog = ProgressDialog.show(MainActivity.this, "Dialogo","Espera 2 segundos...", true);
        new Thread()
            {
              public void run()
              {
                try { sleep(2000);  }
                catch (Exception e)    {  }
                MIdialog.dismiss();
              }
            }.start();       
     }


Un cuadro de diálogo donde indica el progreso en una barra.(ProgressDialog).
public void FunBoton5(View view)
    {       
        MiDialogo = new ProgressDialog(MainActivity.this); 
        MiDialogo.setProgressStyle(ProgressDialog.STYLE_HORIZONTAL); 
        MiDialogo.setMessage("Loading..."); 
        //MiDialogo.setCancelable(false);
        MiDialogo.setCancelable(true);
        MiDialogo.show();                  
        MiDialogo.setProgress(25);            
    }



Esto no es un diálogo, pero necesitaba representar ProgressBar y he creado un contador de cuenta atrás mediante la clase MyCountDownTimer.
He añadido un sonido cuando termina la cuenta atrás.
public void FunBoton6(View view)
    {
        if (!timerHasStarted) {
                countDownTimer.start();
                timerHasStarted = true;
                miText.setText("STOP");
            } else {
                countDownTimer.cancel();
                timerHasStarted = false;
                miText.setText("RESTART");
            }
    }
      
    //Cuenta atras
    public class MyCountDownTimer extends CountDownTimer
   {
        public MyCountDownTimer(long startTime, long interval)
                {
                       super(startTime, interval);
                }         
              @Override
        public void onFinish() {
                  miText.setText("Cuenta terminada!");
                  toneG.startTone(ToneGenerator.TONE_DTMF_S, 2000);
              }
              @Override
        public void onTick(long millisUntilFinished)
              {
                 int i;
                  miText.setText( " " + millisUntilFinished/100 );
                  i=(int)millisUntilFinished ;
                  i/=100;
                  miBarra.setProgress(i);
              }
     }


Como vemos en todos los diálogos que he creado el nombre de las distintas opciones las he creado en el propio programa java.
Para una mejor internacionalización deberíamos crear todas las cadenas en el fichero "strings.xml" , pero para este caso sirve.
Ejemplo de como se debería hacerse en el modo de strings.xml.
 res/values/strings.xml: En la aplicación (java)
<?xml version="1.0" encoding="utf-8"?>
<resources>
   
<string-array name="planets_array">
       
<item>Mercury</item>
       
<item>Venus</item>
       
<item>Earth</item>
       
<item>Mars</item>
   
</string-array>
</resources>
Resources res = getResources();
String[] planets = res.getStringArray(R.array.planets_array);

PROGRAMA

Saludos
Juan Galaz


Bibliografía:
http://www.edu4java.com/es/androidlibro/mostrar-dialogo-android.html
http://devtroce.com/2012/01/19/mensajes-de-dialogo-popup-alertdialog/
http://www.tutorialandroid.com/medio/como-programar-una-rueda-de-espera-progressdialog/
http://developer.android.com/intl/es/guide/topics/resources/string-resource.html
http://developer.android.com/intl/es/samples/MediaRouter/res/values/arrays.html