Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

360 degree image rotating in Xamarin Forms

In Xamarin Forms, I want to rotate an image as 360 degree. This image rotates with animation constantly at run time. Also, this image has 6 versions of different views. Think about like rotating a glass by hand.

I try this one but it is useless:

<Image Source="glass.png" RotateToY="30"/>
like image 506
xamarin Avatar asked Dec 02 '22 12:12

xamarin


2 Answers

You can use the Image "Rotation" property and change it via a background thread if needed and add animate to it via RotateTo in order to control the rotation speed and start/end point speeds:

async Task RotateImageContinously()
{
    while (true) // a CancellationToken in real life ;-)
    {
        for (int i = 1; i < 7; i++)
        {
            if (image.Rotation >= 360f) image.Rotation = 0;
            await image.RotateTo(i * (360 / 6), 1000, Easing.CubicInOut);
        }
    }
}

Bounce:

enter image description here

Linear:

enter image description here

Cubic:

enter image description here

like image 109
SushiHangover Avatar answered Jan 05 '23 13:01

SushiHangover


Here is a similar question and answers on Xamarin Forums.

The accepted answer suggests this:

private async Task RotateElement(VisualElement element, CancellationToken cancellation)
{
    while (!cancellation.IsCancellationRequested)
    {
        await element.RotateTo(360, 800, Easing.Linear);
        await element.RotateTo(0, 0); // reset to initial position
    }
}
like image 24
Steve Chadbourne Avatar answered Jan 05 '23 13:01

Steve Chadbourne