|
|
Línea 27: |
Línea 27: |
| ##Los diálogos son un tipo especial de fragmento | | ##Los diálogos son un tipo especial de fragmento |
| ===Tipos de diálogo=== | | ===Tipos de diálogo=== |
− | | + | *Estos son algunos de los tipos de cajas de diálogos que podemos ver |
− | ;Dialog
| + | *Implementaremos algunos de ellos y veremos su utilidad |
− | ;AlertDialog
| + | *Son sencillos de utilizar |
− | ;CharacterPickerDialog
| + | #Dialog |
− | ;DatePickerDialog
| + | #AlertDialog |
− | ;ProgressDialog
| + | #CharacterPickerDialog |
− | ;TimePickerDialog
| + | #DatePickerDialog |
− | ;Dialogo personalizado
| + | #ProgressDialog |
− | ;Toast
| + | #TimePickerDialog |
| + | #Dialogo personalizado |
| + | #Toast |
| | | |
| ===Modificando la interfaz=== | | ===Modificando la interfaz=== |
Revisión de 12:35 22 may 2013
|
Trabajo en proceso, espera cambios frecuentes. Tu ayuda y retroalimentación son bienvenidos. Ver página de charlas.
|
|
DESARROLLO DE APLICACIONES CON ANDROID SDK
¡Bienvenido a este curso!
Ejemplos bá.sicos
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
- 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
- Dialog
- AlertDialog
- CharacterPickerDialog
- DatePickerDialog
- ProgressDialog
- TimePickerDialog
- Dialogo personalizado
- Toast
Modificando la interfaz
- Referencia
http://developer.android.com/reference/android/widget/Button.html
- Los elementos gráficos los podemos añadir de dos maneras
- En el fichero java directamente
- En el fichero xml que descrive el layout de la ventana donde queremos que aparezcan
- Lo haremos en el fichero xml por simplicidad
- La idea es que al hacer click salga un mensaje emergente
<Button
android:id="@+id/button1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Mensaje Toast"
android:onClick="clickToast"/>
- Entre los atributos vemos que está onClick
- Este atributo especifica el nombre del método que se va a ejecutar cuando ocurra la acción
- En el código ese método recibirá la vista de este layout como parámetro
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
- Un objeto de la clase Toast se puede instanciar con un método estático makeText de la misma clase
makeText(contexto, texto, duracion)
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
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();
}
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
<Button
android:id="@+id/button2"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Opciones Lengaje"
android:onClick="clickMesajeOpciones"/>
- Definimos un array de opciones
CharSequence[] idiomas={"Españlo","Inglés","Alemán"};
boolean [] idiomasSeleccionados=new boolean[idiomas.length];
public void clickDialogoOpciones(View v){
showDialog(0);
}
- 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
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();
}
});
Barra de progreso
- En este caso usaremos un objeto ProgressDialog en lugar de un Builder
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();
}
- 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
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;