Android: convertir dp a pixels

En Android, a veces, es necesario hacer un tratamiento del tamaño de ciertos elementos en pixels, durante la ejecución de la aplicación, como por ejemplo en:

view.setPadding(int, int, int, int);

Sin embargo, sabemos que, sobre todo al diseñar interfaces, es muy conveniente utilizar dip (density independent pixel) a la hora de especificar tamaños, para evitar variaciones entre dispositivos con resoluciones diferentes.

De manera que, para ejecutar código como el de arriba (cambios en runtime), podemos hacer lo siguiente:

float sizeInDip = 10f;
int padding = (int) TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_DIP, sizeInDip, getResources().getDisplayMetrics());

Vía | James Elsey Blog

Java: invertir el orden de un array

Ahí va un trozo de código, no sólo rápido sino además eficiente, para invertir el orden de un array en Java:

public static  T[] reverse(T[] array) {
    Collections.reverse(Arrays.asList(array));
    return array;
}

Como indica el autor del post original, la ejecución no implica copia de arrays, de manera que resulta rápido y sin efectos laterales (se devuelve el mismo array recibido, con el orden modificado.

Nota acerca de Arrays.asList()

La documentación de esta API muestra que la lista que devuelve es de tamaño fijo. Esto implica que cualquier llamada a add() o remove() devolverá una excepción de tipo UnsupportedOperationException. Si se pasa a través de la interfaz java.util.List el resultado es indefinido, ya que cualquier programador esperaría que un objeto de ese tipo fuera modificable, en el sentido de poder añadir/eliminar elementos.

Vía | http://schneide.wordpress.com

Android: código para leer el log

Sólo se me ocurre una razón para acceder al log directamente, por código, en una aplicación Android, y es con propósito de debug. De hecho, en la vía original, Hello Android, no nombra ninguna otra…

En cualquier caso, allá va el código que permite hacerlo:
Continue reading

Android: evitar que el móvil entre en reposo

A veces una aplicación requiere que el teléfono no entre en modo reposo o ahorro de energía, por ejemplo, como dice el artículo original en inglés, durante una actualización o una descarga crítica.

A continuación se muestra el código para evitar que el gestor de energía pasa el terminal a reposo. Primero creamos una instancia de WakeLock:
Continue reading

Java: parsear un texto – cómo descomponer un texto en palabras, frases, líneas, etc.

El JDK de Java incluye una clase tremendamente útil a la hora de parsear y descomponer un texto en palabras, frases y/o líneas.

La clase es BreakIterator forma parte del paquete java.text. Esta clase está preparada incluso para funcionar con diferentes “locales”, y soporta cuatro tipos diferentes de “límites”, a la hora de determinar cómo “trocear” un texto:

  • Líneas: getLineInstance()
  • Frases: getSentenceInstance()
  • Palabras: getWordInstance()
  • Caracteres: getCharacterInstance()

Además tiene métodos como next() y previous() que puede dar la sensación de estar utilizando un iterador. Sin embargo, estos métodos realmente devuelven un entero que permite localizar dentro de la cadena el comienzo del siguiente item.

Ahí van algunos ejemplos de código:
Continue reading

Android SDK: prueba tus aplicaciones vía Wifi

Existe una aplicación que permite probar tus aplicaciones en desarrollo para Android (y debugearlas) por Wifi.

Aquí el QR Code para descargar la aplicación:
Continue reading

jQuery + twitter: obtener último tweet de un usuario

Esta es la manera más sencilla de obtener tweet de un usuario:

$(document).ready(function() {

    // establecer el id de twitter:
    var user = 'loquesea';

    // utilizamos jquery con la api de twitter; devuelve un único resultado:
    $.getJSON('http://twitter.com/statuses/user_timeline.json?screen_name=' + user + '&count=1&callback=?', function(data) {

        // este es el resultado devuelto:
        var tweet = data[0].text;

        // procesamos los links y las respuestas:
        tweet = tweet.replace(/((https?|s?ftp|ssh)://[^"s<>]*[^.,;'">:s<>)]!])/g, function(url) {
            return ''+url+'';
        }).replace(/B@([_a-z0-9]+)/ig, function(reply) {
            return  reply.charAt(0)+''+reply.substring(1)+'';
        });

        // mostramos el resultado:
        $("#tweet").html(tweet);
    }); 

});

Utiliza el timeline API para mostrar la última entrada. Además, convierte las URLs, las respuestas y las etiquetas (hashtags) en enlaces.

Para que funcione es necesario crear un párrafo (div o p) en nuestro HTML y darle el identificador “tweet”.

O:

Vía | http://www.queness.com

Aplicación Web: almacenamiento local de valores (Web Storage)

La capacidad de almacenar valores locales en una aplicación web es una funcionalidad relativamente nueva, añadida en la especificación de HTML5.

El código javascript para utilizar esta funcionalidad es muy sencillo. De hecho, tenemos múltiples opciones para almacenar valores localmente y reobtenerlos durante la ejecución.

La información se almacena siempre como un “mapa” o diccionario con pares clave/valor.

Estas son las diferentes opciones de código para leer/escribir valores:
Continue reading