martes, 23 de julio de 2013

Tonterías varias que mejoran la usabilidad de una aplicación android

Este post lo iré actualizando con pequeños tips rápidos que voy usando en las aplicaciones.

Hacer que por defecto no salga el teclado en una vista con campos de edición:

// Se pone dentro del método onCreate:
getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_STATE_ALWAYS_HIDDEN);

Volver a atrás pulsando el icono principal de la actividad (el superior izquierdo)


@Override
 public boolean onOptionsItemSelected(MenuItem item) {
  super.onOptionsItemSelected(item);
  switch(item.getItemId()){
      
   case android.R.id.home: 
    this.finish(); 
   break; 
   
  }
  return true;
 }

Bloquear el tipo de pantalla (horizontal vs vertical)

En el archivo AndroidManifest.xml, en la declaración de la actividad que queramos forzar:

android:screenOrientation="landscape"  // En este caso la pantalla siempre será horizontal

Fuentes:

Aquí encontré como fijar el giro de pantalla. Aunque tiene más explicaciones interesantes.


jueves, 18 de julio de 2013

Lista select con spinner en android

Acabo de necesitar hacer una lista de selección para mi aplicación en android. Como en otras ocasiones, encontré la respuesta en un blog conocido.

El primer paso consiste en crear los valores que se mostrarán. Dichos valores se almacenan en un fichero arrays.xml situado en la carpeta values.

En mi caso los valores los he referenciado a través del fichero string.xml


 

   
       @string/kanbanlist1
       @string/kanbanlist2
       @string/kanbanlist3
   
    

Después en el layout de la actividad pertinente, escribimos un "spinner" que referencia a los valores sabiendo que "entries" son las entradas del select, y "prompt" el título que muestra el popup.




Sólo nos queda recuperar el valor desde la actividad. A continuación el resultado final.


Lista select.

Popup que sale al pulsar sobre el select

Recuperación del valor:

// Recupera el valor:
Spinner spinnerKanban = (Spinner) findViewById(R.id.editTaskListNumber);
long valueSpinter = spinnerKanban.getSelectedItemId();
valueSpinter++;  // El spinner comienza en 0, pero mis comparaciones de valores en 1 :D
// Operación a realizar con el valor.

Saludos.

sábado, 13 de julio de 2013

Popup de confirmación en android, usando la clase AlertDialog

A veces necesitamos que se muestre un menú de confirmación antes de realizar una determinada acción (a menudo borrar). En android esto se hace con la clase AlertDialog.

En mi caso en concreto tengo mucho listados (ListView) en los cuales muestro una determinada información y varios botones de acción.


Listado de proyectos de aplicación. Cada ítem tiene varios botones con acciones asociadas.

Cada botón tiene asociada un método usando el valor onclick:

android:onClick="deleteProyect"

Dentro dentro de ese método se encuentra el código que muestro a continuación:


import android.app.AlertDialog;
import android.content.DialogInterface;

...

          AlertDialog.Builder alertDialogBuilder = new AlertDialog.Builder(this);
          // set title
          String alert_title = getResources().getString(R.string.alert_project_delete_title);
          String alert_description = getResources().getString(R.string.alert_project_delete_description);
    alertDialogBuilder.setTitle(alert_title);

    // set dialog message
    alertDialogBuilder
     .setMessage(alert_description)
     .setCancelable(false)
     .setPositiveButton("Yes",new DialogInterface.OnClickListener() {
      // Lo que sucede si se pulsa yes
      public void onClick(DialogInterface dialog,int id) {
       // Código propio del método borrado para ejemplo
      }
      
      
       })
     .setNegativeButton("No",new DialogInterface.OnClickListener() {
      public void onClick(DialogInterface dialog,int id) {
       // Si se pulsa no no hace nada
       dialog.cancel();
      }
     });
  
     // create alert dialog
     AlertDialog alertDialog = alertDialogBuilder.create();
  
     // show it
     alertDialog.show();

Y este es el resultado final:


Diálogo de confirmación antes de borrar.

Saludos

domingo, 7 de julio de 2013

Desactivando el foco (onFocus) en las vistas de android

Unas de las cosas que más me molesta de las aplicaciones android es que al cambiar de actividad, si la nueva actividad tiene campos de edición como (EditText) el foco se sitúa sobre ellos, mostrando el teclado virtual.

Navegando encontré un buen post en el que se indica como desactivar el autofocus.

Sencillo, simplemente 2 líneas en el elemento padre de la vista:

android:descendantFocusability="beforeDescendants"
android:focusableInTouchMode="true"

En mi opinión este detallido puede parecer una tontería, pero mejora la usabilidad de la aplicación.

Saludos.

Related Posts Plugin for WordPress, Blogger...