以Xamarin形式旋转的360度图像

时间:2017-09-26 20:45:44

标签: c# xaml xamarin xamarin.forms

在Xamarin Forms中,我想将图像旋转为360度。此图像在运行时不断旋转动画。此外,此图像有6个版本的不同视图。想想就像用手旋转玻璃一样。

我试试这个,但没用:

<Image Source="glass.png" RotateToY="30"/>

3 个答案:

答案 0 :(得分:6)

您可以使用图像“旋转”属性并根据需要通过后台线程进行更改,并通过RotateTo为其添加动画,以控制旋转速度和起点/终点速度:

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);
        }
    }
}

跳出:

enter image description here

线性:

enter image description here

立方:

enter image description here

答案 1 :(得分:0)

这是a similar question and answers on Xamarin Forums

接受的答案表明了这一点:

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
    }
}

答案 2 :(得分:0)

希望此软件包对您有帮助 https://github.com/ilievmark/Basil.Behaviors/tree/master/sample/BehaviorsSample/Pages/Animations

您可以使用类似的东西

           <d:CycledAnimationDecorator Cycles="10">
                <h:SequenceHandlerExecutor WaitResult="True">
                    <s:RotateAnimation Length="800" Rotation="360" />
                    <s:RotateAnimation Length="0" Rotation="0" />
                </h:SequenceHandlerExecutor>
            </d:CycledAnimationDecorator>