sábado, 28 de septiembre de 2019

Workout.Me: Localización y Messaging Center


Fue realmente simple de implementar la localización.

Por el momento me limité a definir algunos strings en dos archivos de recursos, uno en inglés y otro en español.

Para probar el funcionamiento, agregué un ítem de menú en el Flyout para intercambiar entre idiomas, y desde allí se envía un mensaje multicast con el MessagingCenter:



Tan simple como ejecutar una línea de código:

MessagingCenter.Send<AppShell>(this, "LanguageChanged");

Y luego, desde cada clase que se desee, hay que suscribirse para recibir ese mensaje:

MessagingCenter.Subscribe<AppShell> (this, "LanguageChanged", (sender) =>
{
    //ApplyLanguage();
});


Muy limpio, efectivo, fácil de implementar. Hermoso.

Workout.Me: Localization & Messaging Center

I haven't writing in english for a while.

Today I accomplished a new goal, adding localization for different languages on the Workout.Me app.

It was really easy to do. By the moment I just defined some strings in two resource files, one in english and another in spanish.

To try this feature, I added a menu item to the AppShell flyout, which just do switch the languages. Actually the method, first changes the CultureInfo and then send a multicast message through the MessagingCenter class.



Then simply call the Send method:

MessagingCenter.Send<AppShell>(this, "LanguageChanged");

And then, in each desired class, it's necessary to suscribe to that message:

MessagingCenter.Subscribe<AppShell> (this, "LanguageChanged", (sender) =>
{
    //ApplyLanguage();
});


So clean, effective and easy to implement. Beautiful.

Workout.me : Localización e idiomas

Antes de continuar con el armado del resto de las pantallas, quiero dejar resuelto el tema de los idiomas y la traducción. 

Esto en Xamarin se lleva a cabo con archivos de recursos y luego referenciando estos strings desde el código o el markup xaml. 


domingo, 22 de septiembre de 2019

lunes, 16 de septiembre de 2019

Workout.Me - MVVM

Después de renegar un poco logré implementar un patrón MVVM simple. Una clase del modelo de dominio, un viewmodel, y una vista que hace referencia a éste en su BindingContext.

El ViewModel lo estoy derivando de un ViewModelBase, que a su vez derivo de ExtendedBindableObject. Esta última clase es la que se encarga de lanzar el evento PropertyChanged, que da aviso al View cuando se modifican las propiedades del ViewModel.

Por otro lado, la lista de objetos a mostrarse, el ViewModel la está obteniendo ahora de un servicio, que actualmente genera por código los ítems a mostrar.


Próximos pasos: obtener la lista de ítems accediendo a la capa de datos, y que ésta a su vez los recupere de una base local.

domingo, 15 de septiembre de 2019

Workout.Me - nuevo proyecto

Tal como había adelantado hace unos días, estoy comenzando con un proyecto nuevo, una aplicación móvil.

Por ahora la aplicación, salvo que se me ocurra o aparezca algo mejor, se llamará Workout.Me, y se trata de una herramienta con el objetivo primario de asistir en lo que a entrenamiento se refiere.

La idea es que cuente con varias opciones predefinidas para seleccionar, en cuanto a formas de entrenar, según los objetivos del usuario. Y mucha personalización.

A diferencia de proyectos anteriores donde busqué satisfacer en mayor o menor medida las espectativas del usuario final, en este caso ese usuario final soy yo. Obviamente que vengo repasando e investigando las principales opciones que actualmente hay en mercado, pero mi objetivo principal es que la app tenga todo aquello que busco y que actualmente no estoy encontrando en las aplicaciones disponibles.

El proyecto tiene objetivos múltiples. Por un lado, claro, está la aplicación propiamente dicha. Pero también el aprendizaje. Estoy aprediendo todo lo posible acerca de la tecnología Xamarin, aplicando patrones como MVVM, inyección de dependencias, skins, localización, etc.

Iré narrando los avances y novedades en la sección de blog, bajo la etiqueta workoutme.

Ah, este es el logo:


lunes, 9 de septiembre de 2019

Agilidad Vs. Escalabilidad y Mantenimiento

Vengo leyendo hace rato que en desarrollo mobile está bastante generalizado el patrón MVVM (model - view - viewmodel).

Como la aplicación del proyecto en curso es bastante pequeña, quizás no se justifique el esfuerzo de implementarlo. 

Pero creo que se justifica desde la inversión en conocimiento y en incorporarlo como buena práctica a futuro.

domingo, 8 de septiembre de 2019

Vuelta a la vida!

Después de largo tiempo sin actividad, y luego otro largo tiempo haciendo cosas pero sin publicarlas, vuelvo a darle vida a este blog.

Retomé el desarrollo de aplicaciones móviles.

Había estado unos cuantos meses avanzando con una aplicación android, en Android Studio, y terminé sumamente frustrado por lo dificultoso de lograr algo tan sencillo como compilar la aplicación. Las dependencias y los repositorios de donde se van descargando las mismas, que maven, que gradle, que integración continua, etc. Todo muy lindo salvo cuando estás atrás de un proxy corporativo que te filtra la mitad de internet, y que es imposible de configurar en la IDE.

Como mis pretensiones en cuanto a UI/UX eran modestas, decidí ir por lo seguro y me pasé a Xamarin.Forms. El viejo y conocido Visual Studio, además de no comerse viva la RAM del equipo, es mucho más llevadero de configurar y sacar andando lo que sea.

A la par de esto, quiero retomar también el desarrollo de juegos, y no estoy seguro de qué plataforma será. Quizás Unity, quizás monogame. Veremos.

Próximamente habrá más noticias y avances.