|
|
(8 revisiones intermedias por el mismo usuario no mostrado) |
Línea 1: |
Línea 1: |
− | {{TEP}}
| + | {{:Usuario:ManuelRomero/Android/PrimerContacto/nav}} |
− | {{:Usuario:ManuelRomero/Android2/PrimerPrograma/nav}} | + | |
− | {{TEP}}
| + | |
− | {{:Usuario:ManuelRomero/Android2/PrimerPrograma/nav}}
| + | |
− | <br>
| + | |
− | {{#widget:Slides}}
| + | |
− | {{MiTitulo| Programación en android }}
| + | |
− | | + | |
− | <div class="slides layout-regular template-default">
| + | |
− | <div class="slide">
| + | |
− | </div>
| + | |
− | ===Concepto de cajas de dialogo===
| + | |
− | *Son widgets que contienen informción para el usuario
| + | |
− | *La información se presenta en una ventana aparte de la aplicación
| + | |
− | *La ventana puede tener botones para que el usuario interactúe
| + | |
− | *Puede pedir información o simplemente aceptar o confirmar algo
| + | |
− | *Iremos presentando las diferentes opciones que se plantean
| + | |
− | ===Métodos para presentar los diálogos===
| + | |
− | *Existen dos métodos
| + | |
− | #Basado en versiones anteriores
| + | |
− | ##los diálogos los gestiona la clases '''''activity''''' desde una pila
| + | |
− | ##Los diálogos no se comparten entre actividades
| + | |
− | ##Muchos métodos utilizados están obsoletos
| + | |
− | ##Es el más fácil de implementar
| + | |
− | #Basado en fragmentos
| + | |
− | ##Usados desde el API 11 (Android 3.0)
| + | |
− | ##Puede funcionar con versiones anteriores si usamos el ''paquete de soporte Android''
| + | |
− | ##Los diálogos los gestiona '''''FragmentManager''''' ''android.app.FragmentManager
| + | |
− | ##Los diálogos son un tipo especial de fragmento
| + | |
− | ===Tipos de diálogo===
| + | |
− | *Estos son algunos de los tipos de cajas de diálogos que podemos ver
| + | |
− | *Implementaremos algunos de ellos y veremos su utilidad
| + | |
− | *Son sencillos de utilizar
| + | |
− | #Toast
| + | |
− | #Dialog con uno dos o tres botones
| + | |
− | #Dialog seleccionar una opción
| + | |
− | #Dialog seleccionar varias opciones
| + | |
− | #ProgresDialog circular
| + | |
− | #ProgresDialog horizontal
| + | |
− | #Otras que no implemenaremos
| + | |
− | ##CharacterPickerDialog
| + | |
− | ##TimePickerDialog
| + | |
− | ##Dialogo personalizado
| + | |
− | | + | |
− | ===Empezamos===
| + | |
− | {{Actividad| *Creamos un nuevo proyecto de android
| + | |
− | *Le llamamos por ejemplo Dialogos}}
| + | |
− | ===El fichero java===
| + | |
− | *Escribimos el código para que aparezca el mensaje
| + | |
− | *Básicamente lo que haremos es escribir el código de este método '''''clickToast'''''
| + | |
− | *Este método recibe como argumento la vista donde está el botón ç
| + | |
− | *En él instanciaremos un objeto de la clase '''''Toast'''''
| + | |
− | | + | |
− | ===Clase Toast===
| + | |
− | clase definida en el paquete '''''widget'''''
| + | |
− | android.widget.Toast
| + | |
− | ;Referencia
| + | |
− | http://developer.android.com/guide/topics/ui/notifiers/toasts.html
| + | |
− | *Esta clase implementa la ventana mas sencilla de diálogo
| + | |
− | *Es simplemente un alert o MsgBox con un solo parámetro,
| + | |
− | *El parámetro es el texto que visualiza
| + | |
− | *Se visualiza independientemente del activity de la aplicación
| + | |
− | *Por lo que no oculta la activity que sigue visible y activa
| + | |
− | *El mensaje generado por '''''Toast''''' desaparece cuando se cumple un ''timeout''
| + | |
− | | + | |
− | | + | |
− | *Un objeto de la clase Toast se puede instanciar con un método estático '''''makeText''''' de la misma clase
| + | |
− | <source lang=java>
| + | |
− | makeText(contexto, texto, duracion)
| + | |
− | </source>
| + | |
− | Este métod recibe tres parámetros
| + | |
− | ;contexto
| + | |
− | :Objeto que describe el en entorno actual de la interfaz de la aplicación
| + | |
− | ;texto
| + | |
− | :La cadena de caracteres que se va a visualizar
| + | |
− | ;duración
| + | |
− | :tiempo en el que dura la ventana emergente
| + | |
− | :puede tomar dos valores como constantes de la propia clase
| + | |
− | LENGTH_LONG
| + | |
− | LENGTH_SHORT
| + | |
− | El método que añadimos es el siguiente
| + | |
− | <source lang=java>
| + | |
− | public void clickToast(View v){
| + | |
− | Context contesto = getApplicationContext();
| + | |
− | CharSequence texto = "Este ejemplo ha funcionado FACIL!!!!";
| + | |
− | int duracion = Toast.LENGTH_LONG;
| + | |
− |
| + | |
− | Toast mensaje = Toast.makeText(contesto, texto, duracion);
| + | |
− | mensaje.show();
| + | |
− | }
| + | |
− | </source>
| + | |
− | | + | |
− | ===Ventana dialogo con ckeckbox===
| + | |
− | *A continución realizaremos otra ventana de diálogo
| + | |
− | *Seguimos usando el mismo proyecto
| + | |
− | *En ella el usuario debe checkear distintas opciones (seleccionar idiomas)
| + | |
− | *En la misma confirmaremos o cancelaremos la selección
| + | |
− | ===Realización de la práctica===
| + | |
− | *Modificamos el interfaz
| + | |
− | <source lang=xml>
| + | |
− | <Button
| + | |
− | android:id="@+id/button2"
| + | |
− | android:layout_width="wrap_content"
| + | |
− | android:layout_height="wrap_content"
| + | |
− | android:text="Opciones Lengaje"
| + | |
− | android:onClick="clickMesajeOpciones"/>
| + | |
− | </source>
| + | |
− | *Definimos un array de opciones
| + | |
− | <source lang=java>
| + | |
− | CharSequence[] idiomas={"Españlo","Inglés","Alemán"};
| + | |
− | boolean [] idiomasSeleccionados=new boolean[idiomas.length];
| + | |
− | </source>
| + | |
− | | + | |
− | <source lang=java>
| + | |
− | public void clickDialogoOpciones(View v){
| + | |
− | showDialog(0);
| + | |
− | }
| + | |
− | </source>
| + | |
− | *El uso del método showDialog esta depreciado a partir de la versión 3.0 de android.
| + | |
− | *El argumento indica un determinado cuadro de diálogo a mostrar
| + | |
− | | + | |
− | *implementamos el método '''''clickMesajeOpciones'''''
| + | |
− | *Este método lo que hace es llamar al método '''''onCreateDialog()''''' que hay que sobreescribir
| + | |
− | *Retorna un objeto Dialog que hay que importar de la clase import android.app.Dialog;
| + | |
− | | + | |
− | | + | |
− | *Para mostrar el código debemos implementar el método '''''onCreateDialog(int)'''''
| + | |
− | *Para crear un cuadro de diálogo utiliza el constructur '''''Buider''''' de la clase '''''AlertDialog'''''
| + | |
− | *Se establecen las propiedades como icono, título, botones, casillas de verificación, ...
| + | |
− | *se invoca al método create del objeto builder
| + | |
− | <source lang=java>
| + | |
− | Builder ventanaDialogo = new AlertDialog.Builder(this);
| + | |
− | ventanaDialogo.setIcon(R.drawable.ic_launcher);
| + | |
− | ventanaDialogo.setTitle("Ejemplo de cuadro diálogo 1 con texto" );
| + | |
− | ventanaDialogo.setPositiveButton("SI", new DialogInterface.OnClickListener() {
| + | |
− | @Override
| + | |
− | public void onClick(DialogInterface dialog, int which) {
| + | |
− | // TODO Auto-generated method stub
| + | |
− | Context contesto = getBaseContext();
| + | |
− | int duracion=Toast.LENGTH_LONG;
| + | |
− | Toast.makeText(contesto,"OK seleccionado",duracion).show();
| + | |
− | }
| + | |
− | });
| + | |
− | </source>
| + | |
− | ===Barra de progreso===
| + | |
− | *En este caso usaremos un objeto ProgressDialog en lugar de un Builder
| + | |
− | <source lang=java>
| + | |
− | public void clickProgressDialog(View v){
| + | |
− | final ProgressDialog barraProgreso = ProgressDialog.show(this, "Haciendo algo","Espere que termine",true);
| + | |
− | new Thread(new Runnable(){
| + | |
− | public void run(){
| + | |
− | try{
| + | |
− | Thread.sleep(5000);
| + | |
− | barraProgreso.dismiss();
| + | |
− | }catch (InterruptedException e){
| + | |
− | e.printStackTrace();
| + | |
− | }
| + | |
− | }
| + | |
− | }).start();
| + | |
− | }
| + | |
− | </source>
| + | |
− | *Lo peculiar de este método es que creamos un thread
| + | |
− | *Un thread o hilo es una línea de ejecución independiente de la ejecución de la aplicación que la invoca.
| + | |
− | ===Otra barra de tarea===
| + | |
− | <source lang=java>
| + | |
− | case 2:
| + | |
− |
| + | |
− | barraSofisticadaDialogo = new ProgressDialog(this);
| + | |
− | barraSofisticadaDialogo.setIcon(R.drawable.ic_launcher);
| + | |
− | barraSofisticadaDialogo.setTitle("Hanciendo algo, no molesten!!");
| + | |
− | barraSofisticadaDialogo.setProgressStyle(ProgressDialog.STYLE_HORIZONTAL);
| + | |
− | barraSofisticadaDialogo.setButton(DialogInterface.BUTTON_POSITIVE,"OK",
| + | |
− | new DialogInterface.OnClickListener() {
| + | |
− | @Override
| + | |
− | public void onClick(DialogInterface dialog, int which) {
| + | |
− | // TODO Auto-generated method stub
| + | |
− | Toast.makeText(getBaseContext(), "Ok cliqueado",Toast.LENGTH_SHORT).show(); }
| + | |
− | });
| + | |
− | return barraSofisticadaDialogo;
| + | |
− | </source>
| + | |