Parte de la presentación que hice en línea a alumnos de la carrera de Ingeniería en Sistemas Computacionales del Tecnológico Nacional de México en Celaya (asignatura: Desarrollo de Aplicaciones para Dispositivos Móviles).
Temas:
* Dependency Service
* Custom Renderers
* Effects
* Styles
Xamarin presento una nueva herramienta en su suite llamada Xamarin.Forms que tiene como objetivo permitir a los desarrolladores crear la interfaz de usuario para iOS, Android y Windows Phone con un mismo código común en C# o XAML.
En esta sesión vamos a profundizar en todos los aspectos relacionados con Xamarin.Forms creando una aplicación desde cero donde aprenderemos todos los conceptos básicos.
Xamarin.Forms es un framework que nos añade una capa de abstracción permitiendo desarrollar la interfaz de nuestras aplicaciones móviles multiplataforma una única vez, compartiendo el código de la UI. Veremos como crear aplicaciones con Xamarin.Forms además de centrarnos en cómo acceder a características propias de cada plataforma mediante la creación de servicios o Custom Renders.
Xamarin presento una nueva herramienta en su suite llamada Xamarin.Forms que tiene como objetivo permitir a los desarrolladores crear la interfaz de usuario para iOS, Android y Windows Phone con un mismo código común en C# o XAML.
En esta sesión vamos a profundizar en todos los aspectos relacionados con Xamarin.Forms creando una aplicación desde cero donde aprenderemos todos los conceptos básicos.
Xamarin.Forms es un framework que nos añade una capa de abstracción permitiendo desarrollar la interfaz de nuestras aplicaciones móviles multiplataforma una única vez, compartiendo el código de la UI. Veremos como crear aplicaciones con Xamarin.Forms además de centrarnos en cómo acceder a características propias de cada plataforma mediante la creación de servicios o Custom Renders.
Symfony-Community: Introducción a Symfony Frameworkexcedesoft
El seminario está dirigido a aquellos estudiantes, profesionales, universidades y empresas dedicados a la industria de software que deseen aprender sobre la iniciación de una aplicación Symfony. Se demostrá como descargar e instalar el framework, configuración inicial y conceptos necesarios para el desarrollo de una aplicación web simple.
Presentación realizada en el marco del testing UY (http://testinguy.org/)
con Florencia Iglesias.
Detalla experiencia de uso de Xamarin para verificar requisitos no funcionales.
Los repartidos del tutorial estan disponibles.
-------------------
Presentation given at Testing.UY event (http://testinguy.org/) with Florencia Iglesias.
Details our experience in using Xamarin for Non-Functional testing.
Workshop handouts are available upon request.
Taller evento TestingUY 2017 - Automatización de pruebas no funcionales con X...TestingUy
Expositores: Florencia Iglesias y Santiago Matalonga
Resumen: Atributos de calidad como la portabilidad, confiabilidad, son especialmente difíciles de testear y aún más de automatizar. La diversidad de dispositivos, sistemas operativos y versiones de estos sistemas operativos, resulta típicamente resulta en limitar el número de dispositivos para los que las pruebas de software pueden garantizar el funcionamiento.
La tecnología Xamarin Test Cloud permite la automatización de casos de prueba para ser ejecutado, en simultáneo, en miles de dispositivos móviles. De esta forma se consigue observar el comportamiento del sistema bajo prueba en diferentes entornos.
En este taller se presenta la motivación para la automatización de casos de prueba para atributos de calidad no funcionales, y se presenta un ejemplo práctico realizado en Xamarin Test Cloud.
Xamarin.Forms permite crear interfaces de usuario nativas multiplataforma utilizando un código común. Sin embargo, en ocasiones necesitamos crear elementos específicos por plataforma o acceder a APIs nativas. En esta sesión veremos cómo extender Xamarin.Forms con Custom Renders, como acceder a APIs nativas utilizando el servicio de dependencia junto a otra serie de pequeños consejos.
Presentación que se preparo para la conferencia dada en el Congreso Multidisciplinario en Tecnologías para la Innovación Tekhné 2014, sobre Aplicaciones móviles híbridas.
Symfony-Community: Introducción a Symfony Frameworkexcedesoft
El seminario está dirigido a aquellos estudiantes, profesionales, universidades y empresas dedicados a la industria de software que deseen aprender sobre la iniciación de una aplicación Symfony. Se demostrá como descargar e instalar el framework, configuración inicial y conceptos necesarios para el desarrollo de una aplicación web simple.
Presentación realizada en el marco del testing UY (http://testinguy.org/)
con Florencia Iglesias.
Detalla experiencia de uso de Xamarin para verificar requisitos no funcionales.
Los repartidos del tutorial estan disponibles.
-------------------
Presentation given at Testing.UY event (http://testinguy.org/) with Florencia Iglesias.
Details our experience in using Xamarin for Non-Functional testing.
Workshop handouts are available upon request.
Taller evento TestingUY 2017 - Automatización de pruebas no funcionales con X...TestingUy
Expositores: Florencia Iglesias y Santiago Matalonga
Resumen: Atributos de calidad como la portabilidad, confiabilidad, son especialmente difíciles de testear y aún más de automatizar. La diversidad de dispositivos, sistemas operativos y versiones de estos sistemas operativos, resulta típicamente resulta en limitar el número de dispositivos para los que las pruebas de software pueden garantizar el funcionamiento.
La tecnología Xamarin Test Cloud permite la automatización de casos de prueba para ser ejecutado, en simultáneo, en miles de dispositivos móviles. De esta forma se consigue observar el comportamiento del sistema bajo prueba en diferentes entornos.
En este taller se presenta la motivación para la automatización de casos de prueba para atributos de calidad no funcionales, y se presenta un ejemplo práctico realizado en Xamarin Test Cloud.
Xamarin.Forms permite crear interfaces de usuario nativas multiplataforma utilizando un código común. Sin embargo, en ocasiones necesitamos crear elementos específicos por plataforma o acceder a APIs nativas. En esta sesión veremos cómo extender Xamarin.Forms con Custom Renders, como acceder a APIs nativas utilizando el servicio de dependencia junto a otra serie de pequeños consejos.
Presentación que se preparo para la conferencia dada en el Congreso Multidisciplinario en Tecnologías para la Innovación Tekhné 2014, sobre Aplicaciones móviles híbridas.
Real NET Docs Show - Serverless Machine Learning v3.pptxLuis Beltran
Slides of my presentation about Serverless Machine Learning using Azure Functions, Twilio APIs, and Cognitive Services for text and image processing of WhatsApp messages at .NET Docs Show weekly community event organized by Microsoft
Latam Space Week - Clasificación de rocas espaciales por medio de IA.pptxLuis Beltran
Slides of my presentation about Space rocks image classification using Machine Learning and Artificial Intelligence with Python at Latam Space Week event
3Redu: Responsabilidad, Resiliencia y Respetocdraco
¡Hola! Somos 3Redu, conformados por Juan Camilo y Cristian. Entendemos las dificultades que enfrentan muchos estudiantes al tratar de comprender conceptos matemáticos. Nuestro objetivo es brindar una solución inclusiva y accesible para todos.
(PROYECTO) Límites entre el Arte, los Medios de Comunicación y la Informáticavazquezgarciajesusma
En este proyecto de investigación nos adentraremos en el fascinante mundo de la intersección entre el arte y los medios de comunicación en el campo de la informática.
La rápida evolución de la tecnología ha llevado a una fusión cada vez más estrecha entre el arte y los medios digitales, generando nuevas formas de expresión y comunicación.
Continuando con el desarrollo de nuestro proyecto haremos uso del método inductivo porque organizamos nuestra investigación a la particular a lo general. El diseño metodológico del trabajo es no experimental y transversal ya que no existe manipulación deliberada de las variables ni de la situación, si no que se observa los fundamental y como se dan en su contestó natural para después analizarlos.
El diseño es transversal porque los datos se recolectan en un solo momento y su propósito es describir variables y analizar su interrelación, solo se desea saber la incidencia y el valor de uno o más variables, el diseño será descriptivo porque se requiere establecer relación entre dos o más de estás.
Mediante una encuesta recopilamos la información de este proyecto los alumnos tengan conocimiento de la evolución del arte y los medios de comunicación en la información y su importancia para la institución.
Actualmente, y debido al desarrollo tecnológico de campos como la informática y la electrónica, la mayoría de las bases de datos están en formato digital, siendo este un componente electrónico, por tanto se ha desarrollado y se ofrece un amplio rango de soluciones al problema del almacenamiento de datos.
Índice del libro "Big Data: Tecnologías para arquitecturas Data-Centric" de 0...Telefónica
Índice del libro "Big Data: Tecnologías para arquitecturas Data-Centric" de 0xWord escrito por Ibón Reinoso ( https://mypublicinbox.com/IBhone ) con Prólogo de Chema Alonso ( https://mypublicinbox.com/ChemaAlonso ). Puedes comprarlo aquí: https://0xword.com/es/libros/233-big-data-tecnologias-para-arquitecturas-data-centric.html
En este documento analizamos ciertos conceptos relacionados con la ficha 1 y 2. Y concluimos, dando el porque es importante desarrollar nuestras habilidades de pensamiento.
Sara Sofia Bedoya Montezuma.
9-1.
Es un diagrama para La asistencia técnica o apoyo técnico es brindada por las compañías para que sus clientes puedan hacer uso de sus productos o servicios de la manera en que fueron puestos a la venta.
1. Tópicos Selectos de Xamarin
Dependency Service, Custom Renderer, Effects y Styles
Luis Beltrán
@darkicebeam
luis@luisbeltran.mx
luis.beltran@itcelaya.edu.mx
2. • Mexicano
• Microsoft MVP en Developer Technologies
• Xamarin Certified Mobile Developer
• Estudiante de doctorado en la Universidad
Tomas Bata en Zlin (República Checa)
• Docente en el Tecnológico Nacional de México
en Celaya.
luisbeltran.mx
Luis Beltrán
3. • Xamarin.Forms es una plataforma increíble para crear aplicaciones
móviles que funcionan en Android, iOS y Windows.
• De una manera ágil y dinámica, utilizamos un solo lenguaje para la
funcionalidad (C#) y para el diseño (XAML, o también C#) de manera
tal que el código de la lógica es compartido por los proyectos y los
elementos visuales se mapean a elementos nativos y
comportamientos propios de cada plataforma.
• ¿Podemos extender Xamarin.Forms en caso de ser necesario? Las
necesidades de extensión incluyen:
• Modificar aspectos de la UI.
• Aprovechar a fondo las capacidades que nos ofrece cada plataforma.
• Crear nuevos controles o páginas.
4. Dependency Service
Accediendo a funcionalidad nativa con Xamarin.Forms
https://docs.microsoft.com/en-us/xamarin/xamarin-forms/app-fundamentals/dependency-service/
5. • Cada plataforma expone funcionalidad importante (y en ocasiones
crítica) que no es directamente accesible desde el API de alto nivel
en Forms. Por ejemplo:
• Acceso a la cámara
• Notificaciones locales
• Uso de sensores (GPS, batería, …)
• Etc.
• Conceptos como Dependency Injection y Dependency Service llegan
al rescate para extender la funcionalidad de nuestras apps móviles
desarrolladas en Xamarin.Forms ☺
Justificación
6. Dependency Service
• Es una técnica que permite a las
apps acceder a funcionalidad
específica de plataforma desde el
código compartido.
• De esta manera, los desarrolladores
pueden crear apps que hagan todo
lo que una app nativa puede hacer
exponiendo un servicio que
encuentra una implementación
específica de una interfaz.
7. ¿Cómo funciona?
Se requieren 4 componentes para utilizar Dependency Service:
• Interfaz. La funcionalidad requerida es definida a través de una interfaz en el
proyecto de código compartido.
• Implementación por cada plataforma. Las clases que implementan la interfaz
deben ser agregadas en cada proyecto de plataforma.
• Registro. Cada clase implementada debe ser registrada con Dependency Service
a través de un atributo de metadatos. El registro permite a encontrar la clase a
implementar y suministrarla en lugar de la interfaz en tiempo de ejecución.
• Llamada al Dependency Service. El código compartido necesita llamar
explícitamente a Dependency Service para preguntar por implementaciones de
la interfaz.
8.
9. 1) Interfaz (en el código compartido)
2) Implementación
(proyecto de Android)
3) Registro (atributo en el namespace)
4) Llamada (en el código compartido)
10.
11. 2) Implementación (proyecto de iOS)
3) Registro (atributo en el namespace)
2) Implementación
(proyecto de UWP)
3) Registro (atributo en el namespace y
en App.xaml.cs después de Forms.Init)
13. Custom Renderers
Personalización de la apariencia y comportamiento de controles en cada plataforma
https://docs.microsoft.com/en-us/xamarin/xamarin-forms/app-fundamentals/custom-renderer/
14. Justificación
• Las interfaces de usuario en Xamarin.Forms son renderizadas
utilizando los controles nativos de cada plataforma, de manera que
las apps retienen una apariencia y experiencia de usuario natural
(look & feel).
15. Justificación
• En ocasiones, sin embargo, se necesita personalizar la apariencia y el
comportamiento de la interfaz de usuario por ejemplo para
incrementar la funcionalidad de algún control o estandarizar el
diseño de la UI en las diferentes plataformas.
• Custom Renderers permite sobrescribir el proceso predeterminado
de renderizado de la UI realizado por Xamarin.Forms para diseñar
controles personalizados en cada plataforma.
16. Custom Renderer
• Es una extensión de Xamarin.Forms con la
cual los desarrolladores pueden implementar
sus propias clases Renderer personalizadas
para individualizar la apariencia y/o el
comportamiento de un control.
• Utilizarlos permite sacar mejor provecho a
las mejoras y personalizaciones que ofrece
cada plataforma de manera específica.
17. ¿Cómo funciona?
Para utilizar Custom Renderers se requieren 4 componentes:
• En el código compartido se crea un nuevo control Xamarin.Forms derivado de:
• Un control existente
• View (si es un nuevo tipo de control)
• Por cada plataforma se crea un view renderer donde se sobrescribe el evento
OnElementChanged. Utiliza:
• Un renderer existente como clase base para personalizar un control ya existente
• ViewRenderer<TView, TNative> (para crear un nuevo estilo de control).
• Asociar el renderer al control a través del atributo [ExportRenderer]
• Utilizar el control personalizado en el código de proyecto compartido.
18.
19. 1) Nuevo control (en el código compartido)
2) Renderer (proyecto de iOS)
3) Asociación (atributo en el namespace)
4) Uso (en el código compartido)
20. 2) Renderer (proyecto de Android)
3) Asociación (atributo en el namespace)
2) Renderer (proyecto de UWP)
3) Asociación (atributo en el namespace)
21. OnElementChanged
• Element proporciona una referencia al nivel del control de
Xamarin.Forms.
• NewElement contiene una referencia al control de Xamarin.Forms
• OldElement contiene una referencia al renderer asociado al control de
Xamarin.Forms
• Control proporciona un enlace al nivel de controles nativos. Sus
propiedades son las que se “inyectan” con los nuevos valores.
24. Justificación
• Implementar un Custom Renderer para realizar un cambio muy
simple al personalizar el diseño de un control es con frecuencia una
tarea que puede impactar el tiempo de respuesta de una UI.
• Cuando se desea implementar cambios sencillos en los estilos de un
control a través de las diversas plataformas se recomienda utilizar
Effects debido a que simplifican el proceso de implementación y el
tiempo de carga de la UI se ve beneficiado.
25. Effects
• Los Effects permiten personalizar la
apariencia de un control nativo sin la
necesidad de implementar un Custom
Renderer, simplificando el proceso.
• Normalmente son utilizados para realizar
pequeños cambios en los estilos de un
control.
• Además, son reutilizables y pueden ser
parametrizados y así aumentar su nivel de
reutilización.
26. Effects
• Todo lo que se puede lograr con un Effect también se puede
implementar a través de un Custom Renderer, si bien estos últimos
ofrecen más flexibilidad y configuración.
• Los Custom Renderers son ideales cuando se desea personalizar de
forma profunda la UI en cada plataforma.
27. ¿Cómo funciona?
Para utilizar Effects se requieren 2 componentes:
• Crear un efecto en cada plataforma objetivo a través de una clase que hereda de
PlatformEffect. Se sobrescriben 2 métodos:
• OnAttached: llamado cuando un efecto se adjunta a un control de Xamarin.Forms y aquí se
personaliza el control y se manejan excepciones en caso de que el efecto no se pueda aplicar
al elemento especificado.
• OnDetached: llamado cuando un efecto se separa de un control de Xamarin.Forms y aquí se
realiza la limpieza de efectos (por ejemplo, resetear valores o anular el registro del elemento
de un controlador de eventos).
• Registrar el efecto con los atributos ResolutionGroupName y ExportEffect
• Consumir el efecto adjuntándolo en el control de Xamarin.Forms apropiado en el
proyecto compartido.
28.
29. 1) Efecto (proyecto de Android)
2) Registro (atributos en el namespace)
1) Efecto (proyecto de iOS)
4) Consumo (proyecto compartido)
33. Justificación
• Con frecuencia, las aplicaciones de Xamarin.Forms contienen múltiples
controles que deben tener una apariencia idéntica a lo largo de la app.
• Configurar la apariencia de cada control de forma individual es una
tarea repetitiva y propensa a errores.
• Definiendo un Style es posible personalizar la apariencia de la UI
agrupando y configurando las propiedades disponibles en los diversos
tipos de control visual.
34. Styles
• Permiten personalizar la apariencia de los
elementos visuales. Se definen para un tipo
específico y contienen valores para las
propiedades disponibles en ese tipo.
• La clase Style agrupa una colección de
valores de propiedad en un objeto que luego
puede aplicarse a múltiples instancias de
elementos visuales, reduciendo la repetición
de código XAML (o de C#) y simplificando el
cambio de apariencia en una app móvil.
35. • Las instancias Style creadas en XAML se definen típicamente en un
ResourceDictionary que es asignado a la colección de Resources de
un control, página o a la colección Resources de la aplicación.
• Las instancias Style creadas en C# se definen típicamente en la clase
de la página o en una clase accesible globalmente.
• La ubicación de un estilo define su alcance:
• Los estilos definidos a nivel de control sólo se aplican al control y a sus
elementos secundarios (children).
• Los estilos definidos a nivel de página sólo se aplican a la página y a sus
elementos secundarios (children).
• Los estilos definidos a nivel de aplicación se aplican en toda la aplicación.
36. • Al definir un Style siempre se debe especificar un TargetType, que no es
otra cosa más que el control al cual se aplicará el estilo.
• Cada instancia de Style contiene una colección de uno o más objetos
Setter, cada uno de los cuales contiene un Property y un Value asignado.
• La Property es el nombre de una propiedad enlazable al elemento del cual
se está aplicando el estilo, mientras que el Value es el valor aplicado a la
propiedad.
• Para aplicar un estilo previamente creado, se asigna la propiedad Style de
un control.
37. • Los estilos inferiores en la jerarquía de vistas tienen prioridad sobre
aquellos definidos en una capa superior.
• Por ejemplo, configurar un estilo que establece Label.TextColor en Red a
nivel de aplicación será anulado por un estilo a nivel de página que
establece Label.TextColor en Green.
• De manera similar, un estilo a nivel de página será reemplazado por un
estilo a nivel de control.
• Además, asignar directamente un valor para TextColor en el control Label
tendrá prioridad sobre cualquier estilo.
38. ¿Qué opciones hay para definir estilos?
Existen varios tipos de estilos disponibles en Xamarin.Forms:
• Estilos explícitos
• Estilos implícitos
• Estilos globales
• Estilos heredados
• Estilos dinámicos
• Estilos de dispositivo
39. Estilos explícitos
• Son estilos aplicados selectivamente a un control a
través del atributo x:Key.
40. Estilos implícitos
• Son estilos utilizados por todos los controles con el
mismo TargetType, por lo que no se require que
cada control haga referencia al estilo.
41. Estilos globales
• Son estilos definidos en el diccionario de recursos
de la aplicación, lo que los hace accesibles a toda la
app y evitando duplicidad de estilos a lo largo de las
páginas o controles.
42. Estilos heredados
• Los estilos son capaces de reutilizar otros estilos a
través de la herencia para definir una apariencia
más personalizada a través del atributo BasedOn.
43. Cadena de Herencia:
• Un estilo solo puede heredarse de estilos en el mismo nivel o superior
en la jerarquía de vistas. Esto significa que:
• Un recurso de nivel de aplicación solo puede heredar de otros recursos de
nivel de aplicación.
• Un recurso de nivel de página puede heredar de los recursos de nivel de
aplicación y otros recursos de nivel de página.
• Un recurso de nivel de control puede heredar de recursos de nivel de
aplicación, recursos de nivel de página y otros recursos de nivel de control.
44. Estilos dinámicos
• De forma predeterminada, los estilos no
responden a los cambios en los valores
de las propiedades y permanecen
estáticos durante la ejecución de una
app. Esta limitación se puede eliminar a
través de los recursos dinámicos.
45.
46. Estilos de dispositivo
• Xamarin.Forms incluye 6 estilos dinámicos
conocidos como estilos de dispositivo en la clase
Device.Styles. Sólo son aplicables a controles Label.
• BodyStyle
• CaptionStyle
• ListItemDetailTextStyle
• ListItemTextStyle
• SubtitleStyle
• TitleStyle
49. Tópicos Selectos de Xamarin
Dependency Service, Custom Renderer, Effects y Styles
Luis Beltrán
@darkicebeam
luis@luisbeltran.mx
luis.beltran@itcelaya.edu.mx
¡Muchas gracias por
tu atención!