martes, 24 de junio de 2014

Slider de imagenes CSS sin JS

Hoy os dejo un Slider muy simple que hace que una serie de imagenes giren desde un lado hacia otro, vamos, el típico carrusel de imagenes, pero con la particularidad de que no lleva ni una sola linea de Java Script, esta todo escrito en CSS3.

Os dejo el código SASS, y el CSS


  • SASS

#Slideshow{
    overflow: hidden;

jueves, 19 de junio de 2014

Cambiar la imagen de un ImageView - Android

Para cambiar la imagen de un ImageView En un evento en concreto es muy sencillo, tan solo debemos inicializarlo en el OnCreate de nuestra clase, y después usar el siguiente código:
miImageView.setImageResource(R.drawable.imagen);
Si queremos complicarlo un poco mas, podemos parametrizarlo en las preferencias del usuario por ejemplo y recuperar desde allí un String con el nombre de la imagen, podremos acceder a su Id, y asignarlo al ImageView de la siguiente manera:

Comparar String en Java

Una cosa que nos suele pasar a todos cuando empezamos a programar en Java, o bien llevamos tiempo sin programar en dicho lenguaje, es toparnos con un caso muy común, la necesidad de comparar String, ya sea entre variables, o para que si una variable tiene un valor en concreto poder hacer determinadas acciones.

En cualquier caso seguramente intentemos hacer algo al estilo:
        if(miVartiableConTexto == "Un texto cualquiera"){
        //Haz algo
        }else{
        //Haz otra cosa
        }
Si lo hacemos así, una de 2 o nos damos cuanta rápido de nuestro error, o nos volveremos locos, hay que recordar en un String no es un tipo primitivo, si no un objeto, y como tal no se puede comparar mediante "==" a no ser que lo que queramos es comparar un objeto con otro, pero nunca sus valores, y como es lógico nuestra variable, nunca sera un String que podamos escribir en nuestro condicional.

por lo que cuando necesitemos comparar el valor de un String, o cualquier de objeto, tendremos que recurrir a algo muy sencillo, su método equals, podemos hacerlo con algo similar a lo siguiente:
        if(miVartiableConTexto.equals("Un texto cualquiera")){
         //Haz algo
        }else{
         //Haz otra cosa
        }

domingo, 15 de junio de 2014

Salto de linea en textos dentro del archivo string - Android

Como ya sabemos todos para trabajar con traducciones, y como buena practica en Android es incluir todos los textos en nuestro archivo strings.xml.

Pero que pasa si queremos un texto en varias lineas?
-Podemos introducir distintos TextView, uno para cada linea
-O podemos hacerlo en condiciones, y añadir los saltos de linea en nuestro texto en la variable de nuestras string.

Para introducir un salto de linea solo tenemos que escribir los caracteres \n al final de cada linea.

Os dejo un ejemplo

    <string name="acerca_de">Juego 3 en raya \n
Desarrollado por RoG@Ma Informática.\n
www.rogamainformatica.es</string>

Espero os sirva de ayuda

sábado, 14 de junio de 2014

Android - cannot execute task the task has already been executed (a task can be executed only once)

Al usar las AsyncTask en android puede aparecer el siguiente error:
cannot execute task the task has already been executed (a task can be executed only once)
Esto es debido a que estamos intentando ejecutar 2 veces un mismo hilo, y eso no es posible, lo que si podemos hacer es lanzar un nuevo hilo que ejecute la misma tarea.

Seguramente tengamos algo similar a lo siguiente

public void lanzaAsincrona(View view) {
downloadTask.execute(uri);
}

En donde downloadTask esta igualado posiblemente en el onCreate de la siguiente manera
downloadTask = new myDownloadTask();
de esta forma creamos una nueva instancia de nuestra clase en la variable downloadTask, si borramos esa linea en el onCreate, y la copiamos dentro del método lanzaAsincrona, lo arreglaremos, ya que cada vez que llamemos a ese método crearemos una nueva instancia, por lo que se ejecutara en un nuevo hilo; debería quedar algo así

public void lanzaAsincrona(View view) {
downloadTask = new myDownloadTask();
downloadTask.execute(uri);
}

o en su versión resumida
public void lanzaAsincrona(View view) {
new myDownloadTask().execute(uri);
}

Espero os sirva de ayuda

Android - asynctask an error occurred while executing doInBackground

En ocasiones podemos encontrarnos con el siguiente error:
asynctask an error occurred while executing doInBackground
Al usar una tarea asincrona tenemos que tener cuidado y estar seguro de lo que hacemos, desde un hilo secundario no podemos hacer varias cosas, entre ellas modificar la apariencia del Layut, lanzar un Toast, etc ...

Si intentamos ejecutar alguna de esas acciones seguramente nos de este error, si en nuestra app necesitamos ejecutar alguna tarea, y que esta misma cambie, algo o lance un mensaje (Toast) tenemos metodos especificos para ellos, estos son ejecutados justo antes, o despues de ejecutar la tarea, estos metodos son:

               @Override
protected String doInBackground(String... params) {
//Aqui ejecutaremos la tarea de nuestro hilo asincrono
}

@Override
protected void onPostExecute(String result) {
//Esto se ejecutara al terminar el hilo, es decir la tarea ejecutada en el doInBackgroun
}

@Override
protected void onPreExecute() {
//Esto se ejecutara antes de ejecutar la tarea del doInBackground
}

Tanto en el metodo OnPreExecute, como en el OnPostExecute, es el lugar ideal para lanzar Toast, o cambiar elementos de la interfac

Espero os sirva de ayuda.

viernes, 13 de junio de 2014

Android - Tareas Asincronas

Hacia tiempo que no os traía novedades, pues bien hoy os traigo algo de lo que no habíamos hablado hasta ahora y como son las tareas asincronas en Android.

En este ejemplo muy sencillo basado en el ejemplo que viene para explicar el modo de hacerlo aunque incompleto... del libro Android 4 de ediciones ENI del autor Nazim Benbourahla.

En dicho ejemplo tenemos un layout con un botón y una progressbar, aunque esta ultima oculta, y desde su activity creamos una nueva clase la cual extiende de AsyncTask, y es el método doInBackground el que se encarga de llevar a cabo las tareas en 2 plano, en el ejemplo simplemente dormimos el hilo durante un segundo en cada una de las 10 pasadas del bucle for

Tenéis todo el código en:

https://github.com/rogama/Android---Tareas-Asincronas

Espero os sirva de ayuda