|
|
| (9 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 '''''widgwt'''''
| + | |
| − | 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''
| + | |
| − | | + | |
| − | <!-- Aclarar esto de la vista-->
| + | |
| − | *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>
| + | |