jueves, 28 de febrero de 2013

Como poner el número de las líneas en eclipse

Para cuando da esos errores nullpointerexception y solamente te dan el número de linea donde falla:

Se puede habilitar el ver el número de líneas y así buscar el error más fácilmente:

Botón derecho sobre la línea azul donde se colocan los breakpoint: y seleccionamos ShowLineNumbers


Más sobre Widgets

Si quieres saber más sobre Widgets puedes consultar este enlace
Mas_sobre_Widgets1
Mas_sobre_Widgets2

jueves, 21 de febrero de 2013

Obtener los nombres de los ficheros almacenados en res/raw

Si quieres obtener los nombres de los ficheros que están almacenados en /res/raw tan sólo tienes que ejecutar este método y obtendrás todos los nombres de los recursos en el array fields

public void listRaw(){ 
   Field[] fields=R.raw.class.getFields();
   for(int count=0; count < fields.length; count++){
     Log.i("MIO", fields[count].getName());
   }
}




martes, 19 de febrero de 2013

Personalizando un Adaptador


Hay Componentes que necesitan de Adaptadores para nutrirse de datos y personalizar el aspecto. En ocasiones es posible que necesitemos ciertos datos que  no tengamos disponibles directamente desde el evento del componente asociado a ese Adaptador

Siempre existirá la posibilidad de personalizar el Adaptador y añadir las funciones necesarias para recuperar el dato/datos que necesitemos.

Por ejemplo, podremos recuperar el ID de un recurso asignado a un ImageView en una Galería.

Evento en MainActivity
En el Adaptador solamente es necesario crear una función que recuperé ese dato, en este caso del Array de recursos que tenemos y que es el que utilizamos en la Galería.

Función en el Adaptador utilizado por la Galería de Imágeneres(Gallery)

Simplemente, hacer referencia a este aspecto para tener en cuenta que siempre podemos utilizar el Adaptador para recuperar los datos que creamos necesarios en cualquier momento.

Salu2!

jueves, 14 de febrero de 2013

Cambiar el fondo de una linea del listView al pulsarlo

En primer lugar definimos un xml dentro de la carpeta drawable (por ejemplo list_magenta, que define el color de fondo a magenta y al clicar se pone en gris)



Luego dentro del método getView() del adaptador debemos introducir la siguiente linea de código:

  • Para APIs posteriores a 16 debemos utilizar:





  • Para APIs anteriores tenemos un método que está deprecated:


Automatizar getters y setters con eclipse

Al crear una clase en la que ponemos atributos únicos para esa clase, es necesario crear los métodos get() y set() parara cada atributo, para poder manejarlos.

Eclipse tiene un generador de estos métodos, para que no se escriban a mano:
3 sencillos pasos:
1 Menú Source->Generate Getters and Setters
2 Seleccionar los atributos para los que queremos los getter/setter
3 Pulsar OK



miércoles, 13 de febrero de 2013

Recuperar el nombre del recurso de la imagen seleccionada usando el atributo "Tag"

Si queremos mostrar en un Toast, o en otro control , el nombre de la imagen sobre la que hacemos "click" de un control Gallery podemos apoyarnos en el atributo Tag del control ImageView.

1º paso: establecer el "tag" en los imageView de la Gallery.

Lo primero que debemos hacer es establecer el valor del atributo Tag en el momento de asociar las imágenes al control Gallery (en el getView del adaptador).


En este fragmento de código, obtenemos primero el nombre del recurso y lo almacenamos en la variable "tag". 

Para ello usamos el método getResourceEntryName() pasándole como atributo el identificador de recurso de la imagen (en el ejemplo está almacenado en un array de imagenes, pero sería lo correspondiente a R.drawable.id_del_recurso).

Una vez que tenemos el nombre del recurso en la variable "tag", lo establecemos en el ImageView correspondiente usando el método setTag().


2º paso: recuperar el valor almacenado en el "tag" de la imagen seleccionada

Ahora, vamos al método donde se captura el evento "click" sobre la imagen de la Galería.


En este fragmento de código nos situamos en el método onItemClick(). Aquí recibiremos el ImageView "clickado" en el parámetro "v". Sobre este parámetro solo tenemos que lanzar el método getTag() y aplicarle una conversión al tipo String para obtener el nombre del recurso almacenado previamente en el primer paso.


Añadir un estilo a un Gallery


En primer lugar debemos definir dentro de styles.xml la etiqueta para personalizar un elemento individual de la galería, en este caso el galleryItemBackground.


Luego debemos definir el atributo anteriormente creado dentro del constructor del adaptador de la galería, como vemos en el siguiente código :


Y seteamos el fondo creado dentro del método getView() del adaptador con setBackgroundResource()




martes, 12 de febrero de 2013

Retardar la ejecución de código durante "X" tiempo

Si tenemos un fragmento de código que queremos que tarde un cierto tiempo  en ejecutarse ( en mili segundos) podremos hacer lo siguiente:

-Primero creamos un Handle


- Dentro de mHandle tenemos un función llamada .postDelaye y  que nos pedirá dos atributos, el primero es para la función ( Runnable) donde irá el código a ejecutar después de ese tiempo y el segundo el tiempo en mili segundos.




y por ejemplo ejecutamos el siguiente código:


En este caso al pasar los 5 segundos ( 5000 milisegundos ) se ejecuta run que llama a doStuff para mostrar el Toast con su correspondiente texto.

Fuente :

http://stackoverflow.com/questions/4111905/how-do-you-have-the-code-pause-for-a-couple-of-seconds-in-android

(el segundo post)

Saludos!!


lunes, 11 de febrero de 2013

Combinación de teclas para AVD

El siguiente enlace indica la relación entre las teclas del emulador y las teclas del teclado.
Muy útil si en algún momento no están visibles los botones en el avd.

http://developer.android.com/tools/help/emulator.html

Acceder a todos los recursos de colors.xml

Se puede acceder a todos los recursos de colors.xml para almacenarlos en un array mediante el siguiente método

// Crear un array con todos los campos de colors.xml
Field[] fields = R.color.class.getDeclaredFields();
// Crear un array de los names y sus valores
String[] names = new String[fields.length];
int[] colors = new int[fields.length];
// Acceder a los valores
try {
    for (int i = 0; i < fields.length; i++) {   
       names[i] = fields[i].getName();   
       colors[i] = fields[i].getInt(null);   
       Log.e ("MIO","nombre "+names[i]);   
       Log.e ("MIO","entero "+colors[i]);
    }
} catch (Exception ex) { }

Debemos importar

import java.lang.reflect.Field;

viernes, 8 de febrero de 2013

Métodos para asignar una imagen a un ImageView


Para una referencia a un control ImageView llamado a_miImageView

1.      Por el identificador R del recuso imagen


a_miImageView.setImageResource(R.drawable.tablet);

2.      Por el nombre de la imagen


String nombre="tablet"; //nombre fichero sin extensión

String recurso="drawable";

int res_imagen = getResources().getIdentifier(nombre, recurso,getPackageName());

a_miImageView.setImageResource(res_imagen);

viernes, 1 de febrero de 2013

Landscape cambio de orientación

@Override
    public void onConfigurationChanged(Configuration newConfig) {
        super.onConfigurationChanged(newConfig);
        Toast.makeText(this, "pepe", Toast.LENGTH_SHORT).show();
        // Checks the orientation of the screen
        if (newConfig.orientation == Configuration.ORIENTATION_LANDSCAPE) {
            Toast.makeText(this, "landscape", Toast.LENGTH_SHORT).show();
        } else if (newConfig.orientation == Configuration.ORIENTATION_PORTRAIT) {
            Toast.makeText(this, "portrait", Toast.LENGTH_SHORT).show();
        }
    }

<activity
            android:name=".MainActivity"
            android:label="@string/title_activity_main"
            android:configChanges="orientation|keyboardHidden|screenSize">

http://danielme.com/2012/09/17/rotaciones-de-pantalla-en-android/
http://es.softuses.com/192240
http://techerald.com/page/configuracion-ha-cambiado-cambio-de-orientacion-y-la-destruccion-de-actividades---es-esta-la-forma-en-que-su-supone-que-funciona.html
http://www.elandroidelibre.com/2010/05/aprendiendo-android-i.html
http://proyectosimio.wordpress.com/2012/12/30/programacion-android-ciclo-de-vida-de-una-app/

Gestion de proyectos Android en Eclipse

Todo buen@ programad@r debe saber como organizar su código y reutilizar éste con buenas prácticas.
El siguiente enlace explica la forma de crear librerías propias e incorporarlas a cualquier proyecto
http://developer.android.com/tools/projects/projects-eclipse.html