Logo

javielinux

  • Archivo
  • RSS
  • Ask me anything

Raúl Raja: Scala Resources & Community links for the newcomer

raulrajamartinez:

During the last couple of months I have been asked a few times among colleagues and friends hot to get started with Scala. People come to Scala from diverse backgrounds such as… - Java folks looking for a better Java or just tired of waiting for Java features other modern languages such as C#…

  • hace 1 semana > raulrajamartinez
  • 1
  • Enlace permanente
Share

URL corta

TwitterFacebookPinterestGoogle+

Librerías, maven, Jars y otras movidas guapas

Con SwipeListView he aprendido muchas cosas y una de ellas es que la distribución de una librería es muy importante… otra que un vídeo te ayuda mucho a publicitar tu producto. Pero bueno, quería hablar un poco de la distribución de una librería y sobre los problemas que tiene Android al en algunos casos.

Nosotros e 47 Degrees usamos maven para trabajar, es algo necesario pero que alguna vez te puede dar algún que otro quebradero de cabeza. Yo menos mal que cuento con Raúl Raja, un auténtico máquina en estos temas, supongo que como no todo el mundo tiene un Raúl Raja en su vida intentan usar el método tradicional en Java de “cargar el Jar”.

Algunas opciones que tenemos:

  • Maven: en Android las librerías se cargan en maven como apklibs, donde podemos distribuir nuestros código con los recursos en Android directamente. Esto es realmente bueno, pero no todo el mundo le gusta maven
  • Añadir como módulo: simplemente lo añades a IntelliJ o Eclipse y lo marcas como librería
  • Archivos Jars: el problema es que en los jars no puedes añadir tus recursos de Android, y si tu librería tiene layouts, drawables y demás, tienes un problema

Nosotros en SwipeListView proponemos en el README una manera de usar la librería bastante evidente, simplemente carga el Jar y copiar los recursos a tu app. En nuestro caso es sólo un archivo, por lo que no es demasiado problema, pero como comentaba Ander Webbs en Google Plus hablando sobre este tema a otro usuario, esto puede ser un problema si tienes muchos recursos y el usuario cambia algún nombre de un recurso o se olvida de alguno. Está claro que no es la solución más elegante, pero nos funcionará

Personalmente, lo mejor es usar maven, o simplemente descargarte el código y añadirlo con módulo en tu aplicación, pero la opción de Jar está ahí por si la prefieres.

En todo este rollo de distribuir código en maven o cargar mediante módulos, me gustaría comentar una cosa relacionada con los estilos y temas en Android

Nosotros en 47 Degrees tenemos un proyecto bastante grande, y trabajamos los estilos en nuestros apklibs  de una manera bastante interesante, o por lo  menos a mi me lo parece :-P

Lo que hacemos es crear un archivo “attrs.xml” con los atributos para usar en los temas, pero no creamos los estilos para estos atributos en el módulo en concreto. Puedo usar ese atributo en mi layout simplemente poniendo:

style=”?attr/name”

Lo más interesante de todo esto es que compila sin problemas, ya que el atributo “name” se encuentra en nuestro archivo y es en tiempo de ejecución donde busca ese atributo en nuestro tema.

Claramente nuestro tema tendrá que tener esos atributos declarados y apuntado a los estilos debidamente. 

Esto nos ayuda a dividir de una manera muy clara la parte de diseño de la parte de programación, y creedme que es realmente interesante.

No lo recomiendo para usarlo siempre, en nuestro caso nuestro proyecto tiene unas características especiales que lo requiere y hace que tenga sentido, pero creo que es interesante saber como funcionan los atributos y los estilos en Android para incorporar estas características en tus proyectos si son necesarias.

Si esto lo unes a lo que escribí en otros post como el ContextThemeWrapper o los consejos para crear estilos, hace que me sienta muy orgulloso de lo que estamos haciendo en 47, y hacer lo que dice el final del título de este artículo “movidas guapas”

    • #android
    • #themes
    • #maven
    • #librerias
    • #jars
    • #estilos
  • hace 2 semanas
  • Enlace permanente
Share

URL corta

TwitterFacebookPinterestGoogle+

SpotiDirect - Un ejemplo para jugar con NFC en Android

El viernes pasado di una charla en el Betabeer de Cádiz sobre NFC. Como otras veces preparé un código con un pequeño ejemplo para mostrar como funciona.

Esta vez se nos ocurrió en 47 Degrees hacer una aplicación que guardar listas, albums o canciones de Spotify en una NFC Card y luego poder reproducirlas simplemente con un toque. Está bien para poner tu tarjeta NFC en el coche y al entrar simplemente pasas tu móvil y ya estás escuchando lo que quieres.

Al ejemplo le llamamos SpotiDirect, no se nos ocurrió un nombre peor, y aquí os dejo el código en GitHub para que lo miréis por si os interesa.

Ya sabéis, si os gusta el ejemplo no dejáis de poner un estrella en GitHub, se agradecerá ;-)

    • #android
    • #nfc
    • #spofify
  • hace 1 mes
  • 1
  • Enlace permanente
Share

URL corta

TwitterFacebookPinterestGoogle+

ContextThemeWrapper, ese gran desconocido

Por lo menos para mi lo era hasta hace poco, y al descubrirlo fue un flechazo. Con ContextThemeWrapper he podido hacer cosas muy interesantes, cosas retorcidas, para proyectos retorcidos de esos que disfrutas y odias al mismo tiempo y que te hacen aprender como ningún otro proyecto.

En su simpleza está la potencia de lo que hace. Según la documentación de Android:

A ContextWrapper that allows you to modify the theme from what is in the wrapped context.

La idea es sencilla. Creas un contexto de un tema determinado y luego puedes hacer un LayoutInflater para cargar tu “layout” con el tema especificado. Mola no??

Ejemplo:

Context contextTheme = new ContextThemeWrapper(context, R.style.MyTheme);

LayoutInflater inflater = (LayoutInflater) contextTheme.getSystemService(Context.LAYOUT_INFLATER_SERVICE);

Ahora al hacer esto:

View view = inflater.inflate(R.layout.my_layout, container, false);

Cargaremos nuestra vista con el tema especificado.

Personalmente necesitaba cargar temas en tiempo de ejecución en Fragments distintos y ContextThemeWrapper ha sido un gran aliado.

    • #theme
    • #ContextThemeWrapper
    • #android
    • #layout
  • hace 1 mes
  • 2
  • Enlace permanente
Share

URL corta

TwitterFacebookPinterestGoogle+

TIP: Controlar el Navigation Bar de dispositivos Android sin botones físicos

Posiblemente esa más largo el título que el post ;-). Para los que tienen dispositivos que no tienen botones físicos, como el Nexus 4 o las tablets, tenemos una barra abajo una barra de navegación para poder ir atrás o acceder al launcher.

En algunos momentos nos interesa eliminarlo o, como hacen aplicaciones de vídeo, cambiar los botones por unos pequeños puntos (algo menos intrusivo). ¿La forma de hacerlo? Aquí la tenéis:

Para eliminarlo, aparecerá al tocar la pantalla:

getWindow().getDecorView() .setSystemUiVisibility(View.SYSTEM_UI_FLAG_HIDE_NAVIGATION);

Para cambiar los iconos por puntos usa este flag:

SYSTEM_UI_FLAG_LOW_PROFILE

    • #android
    • #tip
    • #navigation
    • #bar
    • #disable
    • #remove
  • hace 2 meses
  • 3
  • Enlace permanente
Share

URL corta

TwitterFacebookPinterestGoogle+

Share Tether NFC - Mi nueva aplicación

Ayer subí a Google Play mi última aplicación. No esperad mucho de ella, está hecha en unas horas.

La idea es simple: “Compartir tu conexión de internet por NFC a otro dispositivo”. Con la aplicación instalada en los dos dispositivos, puedes acercar tu Nexus 4, por ejemplo, y conectar por tethering tu Nexus 7 o Nexus 10. Sencilla, pero te ahorra configurar las conexiones y además tenía ganas de practicar un poco con NFC.

También puedes conectarlo usando un código QR, pero esto no sorprenderá a vuestros amigos con iPhone, aunque funciona igual :-p

Aquí os dejo en enlace a Google Play para descargar Share Tether NCF.

Espero que os guste.

image

    • #nfc
    • #android
    • #app
    • #share
    • #tethering
    • #tether
    • #nexus
  • hace 2 meses
  • Enlace permanente
Share

URL corta

TwitterFacebookPinterestGoogle+

5 consejos para crear tus estilos en Android

A continuación dejo algunos consejos a la hora de crear estilos y temas en Android. Todos estos consejos, son eso, consejos. Cada uno tenemos nuestras manías y estas son las mías, todo en base a mi experiencia personal trabajando en algunos proyectos sólo y otros muchos en equipo conviviendo con otros programadores o maquetadores sin necesidad de tener experiencia en Android.

Usa una semántica apropiada en los nombres de tus estilos

Nombrar a tus estilos de una forma correcta te ayudará a encontrarlos más rápidamente y entenderlos mejor. Cada uno tiene sus trucos, pero lo importante es tener un truco, y si trabajas en grupo llega a un acuerdo con tus compañeros. Usa prefijos y sufijos que te ayuden a definir tus estilos de una forma adecuada.

Por ejemplo: ProductListContent, ProductListTitle, ProductListDescription y ProductListPrice… podrían ser un buen ejemplo de los estilos que podrías usar en los items de una lista de productos.

Nunca añadas dimensiones directamente en tus estilos, sino referencias a tu archivo dimens.xml

Es una norma que deberías de tener en cuenta sino lo haces ya. Y por supuesto, mucho menos ponerlo en tus XML Layouts.

Si haces estos te será mucho más sencillo adaptar tus aplicaciones a tablets de 7 y 10 pulgadas, además de tener tus código más localizado.

Imagina que tienes una dimensión llamada “font_size_title_product_list” que define el tamaño del título que usas en la lista de productos. Es  probable que cuando veas tu aplicación en 7 pulgadas este texto te pueda parecer algo pequeño. Si lo tienes localizado de esta forma puedes crearte un nuevo archivo dimens.xml en el directorio “values-w600dp-mdpi” de tus recursos y cambiarle el tamaño.

Te recomiendo que lo pruebes si no lo estás haciendo ya.

Simplifica tus layouts con el mínimo de atributos en tus componentes

La experiencia me dice que si pones muchos atributos dentro de tus layouts encontrar errores y cambiar estilos te puede llevar mucho tiempo. Esto se multiplica si trabajar en grupo y no eres tu quien ha decidido donde poner un “padding”, o si quieres cambiar algo después de un par de meses si tocar el código.

Lo mejor para mi, definir los atributos en la medida de lo posible dentro de tus estilos y si usas mi primer consejo y has puesto un nombre fácil de entender… no tendrás problema ninguno para cambiar algo, lo hayas hecho tu o lo haya hecho tu compañero.

Es mejor crear dos estilos que se entiendan que un sólo estilo para reutilizarlo en varios layouts 

Si estuviese demostrado que un número elevado de estilos penaliza el rendimiento de tu app, que no lo sé, sería tan ínfimo el tiempo que siempre te valdría la pena hacer un nuevo estilo que se entienda mejor.

Esto no sólo te ayudará a encontrar tus estilos, sino que si en el futuro quieres cambiar algo de uno de ellos no empezar a meter atributos en el layouts. Divide y vencerás.

Define dimensiones y colores por defecto que puedas usar de forma clara en todas las partes de tus aplicación

Este para mi es un consejo básico. Suelo crear muchas dimensiones por defecto al crear una aplicación como: “padding_default”, “margin_default”, “font_size_title_default”, “font_size_text_default”, “font_size_button_default”, “radius_default”, “height_divider_default”… y todos los que necesite.

Esto te ayudará a tener muchas dimensiones básicas con las que trabajar y que puedes modificar simplemente cambiando un número. Por ejemplo cambiar el tamaño de la letra por defecto de toda la aplicación, el padding que usas entre tus elemento, el margen entre tus ListViews y el borde de la pantalla, y algo mejor… cambiar el tamaño de letra de la aplicación cuando estás en un dispositivo de 7 o 10 pulgadas. Las ventajas son muchas.

Bueno, y estos son mis 5 consejos. Yo los uso y me va bien. Espero los vuestros para poder ser más eficiente haciendo aplicaciones en Android, que al final es lo que cuenta.

    • #android
    • #estilos
    • #styles
    • #themes
    • #temas
  • hace 2 meses
  • 3
  • Enlace permanente
Share

URL corta

TwitterFacebookPinterestGoogle+

SwipeListView: Una librería Open Source

Hoy hemos liberado en 47 Degrees una nueva librería como Open Source. La verdad que llevaba tiempo con la mosca detrás de la oreja porque habíamos intentando implementar un Swipe dentro de un ListView para algunos clientes y siempre teníamos problemas.

Después de encontrar un código de Roman Nurik que hacía un dismiss de items en un ListView me di cuenta de cuales fueron nuestros errores y hace un par de semanas decidimos incluirlo a un cliente y hacer una librería. 

Hemos tenido varios problemillas, pero finalmente lo hemos conseguido hacer decentemente y liberar el código como hacen otros desarrolladores de los cuales nosotros usamos también sus librerías.

Os dejo aquí varios enlaces:

  1. Código fuente de la librería
  2. Una aplicación de demostración
  3. Aplicación de demostración en Google Play

Y por último, la joya de la corona, un vídeo el cual he sido yo mismo el realizador y protagonista, como mi mano temblona, para que podáis ver como funciona la librería

Happy coding!! 

    • #android
    • #opensource
    • #libreria
    • #swipe
  • hace 2 meses
  • 2
  • Enlace permanente
Share

URL corta

TwitterFacebookPinterestGoogle+

Comando rápidos en IntelliJ IDEA

Por si alguien no lo sabe uso IntelliJ IDEA para trabajar en Android. Todo fue gracias a Raúl Raja que me metió en este IDE y ahora mismo la verdad que no me veo volviendo a Eclipse nunca más.

Una de las cosas maravillosas que tiene IntelliJ son los comandos rápidos y cuando empiezas a acostumbrarte a ellos ya es imposible vivir sin ellos. A continuación pongo algunos de los que más suelo usar:

  • ALT + ENTER: Posiblemente el más usado de todos. Cada vez que te encuentres en un apuro, úsalo. Por ejemplo, te sale en rojo una clase porque no está el “import”, pulsa y el te lo busca. Úsalo en cualquier error y te propondrá como solucionarlo el 99% de las veces. Y si no hay error, también te propondrá como mejorar el código…. es genial!
  • COMMAND + N: Buscar una clase en tu proyecto. Eso de buscar por los paquetes en tu proyecto ya no se lleva
  • CONTROL + N: Menú rápido para crear métodos en tu clase como: Constructores, getters, setters, equals, hascode, etc.
  • ALT + F7: Sin duda una maravilla. Si te pones encima de un método por ejemplo y pulsa estas teclas, podrás ver todos los usos de este método en tu proyecto. ¿Se te olvidado una llamada a un método o no encuentras quien lo llama? No te preocupes más por eso
  • MAY + F6: Refactorización de nombres sin preocuparte de nada. Simplemente pones el curso en un método, clase, variables, o encima de un recurso de tu proyecto, y te lo cambia todo. En Android especialmente interesante cuando cambias el nombre de un recurso, te lo modifica también en todas las densidades. POWA!
  • COMMAND + O: Te muestra todos los métodos con los que puedes hacer un Override en la clase en la que te encuentras para poder sobreescribirlo
  • COMMAND + P: ¿Te has encontrado alguna vez escribiendo los parámetros de un método y ya no sabes por cual vas porque son muchos? Pulsa estas teclas y te saldrá una leyenda con todos los parámetros y en negrita en el que te encuentra escribiendo en ese momento
  • COMMAND + J: Te saldrá una lista de Snippets para poder usar, como hacer iteraciones y cosas por el estilo. Pero lo más interesante es que si vas a las preferencias y entras en “Live Templates”, podrás crear tus propios Snippets. Mola!
  • COMMAND + ALT + MAY + N: Buscar símbolos en tu proyecto. Busca cualquier cosa. ¿Te acuerdas de como llamaste a una variables o método pero no recuerdas donde está? Usa esto. Puede tardar un poco pero te salvará la vida.

Uso algunos más, peor bueno… estos son los más importantes para mi. Os recomiendo que lo uséis si no lo hacíais ya.

Y para finalizar, la integración con Git y Svn de IntelliJ es sencilla genial. Pero de eso hablaremos otro día.

Por cierto ¿me recomendáis algún comando rápido?

    • #java
    • #android
    • #intellij
  • hace 2 meses
  • 2
  • Enlace permanente
Share

URL corta

TwitterFacebookPinterestGoogle+

Bienvenido

Después de más de un año sin escribir en mi blog, por flojera, trabajo, errores del servidor y otros motivos… me dispongo de nuevo a escribir mis andaduras como programador desde Tumblr.

No es porque nadie espere que lo haga, ni porque realmente tenga muchas cosas que decir… es simplemente porque me apetece contar las cosas que hago otra vez y ayudar a alguien si realmente es posible.

Así que ¡¡bienvenido!!

    • #bienvenida
  • hace 2 meses
  • Enlace permanente
Share

URL corta

TwitterFacebookPinterestGoogle+

Acerca de Tumblr

Linuxero pesao, programador incansable, geek ambicioso, android developer, creador de TweetTopics y trabajando en @47deg_es

Me, Elsewhere

  • @javielinux on Twitter
  • javiel on Youtube
  • Google
  • javipacheco on github

Twitter

Instagram

loading tweets…

loading photos…

  • RSS
  • Aleatorio
  • Archivo
  • Ask me anything
  • Móvil
Effector Theme by Pixel Union