¡Adquiere el Máster en Xamarin Forms!
Antes de iniciar, te invito a visitar la página de la Membresía de mi academia, donde podrás encontrar:
– Cursos y talleres de Xamarin
– Cursos y talleres en C#
– Cursos y talleres de Blazor
– Cursos y talleres de ASP.NET
– Cursos y talleres en muchas otras tecnologías
¡Todo al precio más bajo posible por tiempo limitado!
Si se desea cambiar una imagen en Xamarin.Forms a partir de la orientación del dispositivo, debemos de seguir estos pasos:
1.- Insertar las imágenes que deseemos utilizar para cada una de las orientaciones del dispositivo. Para esta demo, he utilizado dos, llamadas “Horizontal.png” y “Vertical.png”, cada una con diferente color de fondo, y con una resolución de 1024 x 768 y de 768 x 1024 respectivamente. Dichas imágenes deben incluirse en cada uno de los proyectos de cada plataforma, no en el proyecto compartido. Por ejemplo, para agregarlo en Android debemos agregarlo a la carpeta Resources -> drawable, como se muestra a continuación:
En el proyecto para iOS, debemos colocarlas en la carpeta Resources:
En un proyecto tipo UWP, debemos colocarlas en la carpeta raíz:
2.- Posteriormente, crearemos una página tipo XAML, donde colocaremos un elemento tipo Image, y un botón a modo de ejemplificación:
<Grid> <Image x:Name="imgBackground" Opacity="1" Source="Vertical.png" Aspect="AspectFill"/> <Button HorizontalOptions="Center" VerticalOptions="Center" Text="¡Click!"/> </Grid>
3.- Una vez colocadas las imágenes y creada la nueva página, debemos suscribirnos al evento SizeChanged de la página que acabamos de crear:
public ImageOrientationView() { InitializeComponent(); SizeChanged += ImageOrientationView_SizeChanged; }
4.- Finalmente, en el manejador de eventos, debemos comparar si acabamos de rotar de forma horizontal, o vertical, y asignar a la propiedad Source la imagen correspondiente:
imgBackground.Source = ImageSource.FromFile(Height > Width ? "Horizontal.png" : "Vertical.png");
Para los que no manejen el operador ternario, el código equivalente con if es:
//Código equivalente con if: //if(Height > Width) //{ // imgBackground.Source = "Horizontal.png"; //} //else //{ // imgBackground.Source = "Vertical.png"; //}
El resultado es el siguiente:
Dispositivo en Vertical:
Dispositivo en Horizontal:
Recuerda que el proyecto con todas las recetas lo puedes encontrar aquí:
Saludos.
Entrada basada en las recetas del sitio oficial de Xamarin.Forms.