Xamarin.forms 拖动过程中的PangestureRecognitor

Xamarin.forms 拖动过程中的PangestureRecognitor,xamarin.forms,android-animation,uigesturerecognizer,uipangesturerecognizer,Xamarin.forms,Android Animation,Uigesturerecognizer,Uipangesturerecognizer,我正在使用PangestureRecognitor创建一个简单的拖动动画到图像。但是,当拖动进行时,TotalX和TotalY值不一致,当我拖动时,它们似乎在2个值之间跳跃/闪烁/摆动。下面是这些值的原始跟踪示例: [0:] PanUpdated: StatusType: Started, GestureId: 0, TotalX: 0, TotalY: 0 [0:] PanUpdated: StatusType: Running, GestureId: 0, TotalX: 11.161758

我正在使用PangestureRecognitor创建一个简单的拖动动画到图像。但是,当拖动进行时,TotalX和TotalY值不一致,当我拖动时,它们似乎在2个值之间跳跃/闪烁/摆动。下面是这些值的原始跟踪示例:

[0:] PanUpdated: StatusType: Started, GestureId: 0, TotalX: 0, TotalY: 0
[0:] PanUpdated: StatusType: Running, GestureId: 0, TotalX: 11.1617584228516, TotalY: 11.9234619140625
[0:] PanUpdated: StatusType: Running, GestureId: 0, TotalX: 2.45475260416667, TotalY: 2.80341593424479
[0:] PanUpdated: StatusType: Running, GestureId: 0, TotalX: 11.8422292073568, TotalY: 12.5428161621094
[0:] PanUpdated: StatusType: Running, GestureId: 0, TotalX: 3.20952860514323, TotalY: 3.77924601236979
[0:] PanUpdated: StatusType: Running, GestureId: 0, TotalX: 12.6615346272786, TotalY: 13.5227355957031
[0:] PanUpdated: StatusType: Running, GestureId: 0, TotalX: 4.03237915039063, TotalY: 4.76089477539063
[0:] PanUpdated: StatusType: Running, GestureId: 0, TotalX: 12.8976643880208, TotalY: 14.1595052083333
[0:] PanUpdated: StatusType: Running, GestureId: 0, TotalX: 4.93493143717448, TotalY: 5.72846476236979
[0:] PanUpdated: StatusType: Running, GestureId: 0, TotalX: 13.551747639974, TotalY: 14.7833862304688
[0:] PanUpdated: StatusType: Running, GestureId: 0, TotalX: 5.67492167154948, TotalY: 6.68665568033854
[0:] PanUpdated: StatusType: Running, GestureId: 0, TotalX: 14.1307627360026, TotalY: 15.5877075195313
[0:] PanUpdated: StatusType: Running, GestureId: 0, TotalX: 6.67552185058594, TotalY: 7.82212320963542
[0:] PanUpdated: StatusType: Running, GestureId: 0, TotalX: 14.8915608723958, TotalY: 16.3966369628906
[0:] PanUpdated: StatusType: Running, GestureId: 0, TotalX: 7.67821248372396, TotalY: 8.44764200846354
[0:] PanUpdated: StatusType: Running, GestureId: 0, TotalX: 15.2916819254557, TotalY: 16.9883219401042
[0:] PanUpdated: StatusType: Running, GestureId: 0, TotalX: 8.57093811035156, TotalY: 9.37423706054688
[0:] PanUpdated: StatusType: Running, GestureId: 0, TotalX: 15.8519948323568, TotalY: 17.2493794759115
[0:] PanUpdated: StatusType: Running, GestureId: 0, TotalX: 9.13496907552083, TotalY: 10.1264038085938
[0:] PanUpdated: StatusType: Running, GestureId: 0, TotalX: 16.5894927978516, TotalY: 17.6655578613281
[0:] PanUpdated: StatusType: Running, GestureId: 0, TotalX: 10.049072265625, TotalY: 11.0558268229167
[0:] PanUpdated: StatusType: Completed, GestureId: 0, TotalX: 0, TotalY: 0
但是,如果我将手势添加到容器中,则值可以正常流动

这是我的页面:

<ContentPage>
    <AbsoluteLayout >
        <Image x:Name="Card" Source="CardBack_Red.png" />
    </AbsoluteLayout>
</ContentPage>
好像我在和什么东西搏斗,但我不知道,有什么想法吗

谢谢

-约翰

解决了

原来我只是使用了错误的翻译算法,即GestureStatus。运行case需要将增量直接添加到图像翻译坐标中,而不是同时添加起始翻译。上面代码中的情况如下所示:

        case GestureStatus.Running:
            dragCard.TranslationX += e.TotalX;
            dragCard.TranslationY += e.TotalY;
            break;
我找到了一个更好的方法,帮了很多忙。

解决了

原来我只是使用了错误的翻译算法,即GestureStatus。运行case需要将增量直接添加到图像翻译坐标中,而不是同时添加起始翻译。上面代码中的情况如下所示:

        case GestureStatus.Running:
            dragCard.TranslationX += e.TotalX;
            dragCard.TranslationY += e.TotalY;
            break;

我找到了一个更好的芒克,帮了很多忙。

现在可以用了吗?现在可以用了吗?