我正在使用平移手势识别器进行一些测试。设置非常简单,我有一个 20x20 的框 View ,并通过相对布局进行设置。平移手势的处理程序
switch (args.StatusType)
{
case GestureStatus.Running:
box.TranslationX = box.X + args.TotalX;
box.TranslationY = box.Y + args.TotalY;
break;
case GestureStatus.Completed:
box.TranslationX = 0;
box.TranslationY = 0;
break;
}
所以它运行正常,但是当我尝试在屏幕上拖动 boxview 时,它没有正确转换值。当它试图重新绘制框时,它还会产生这种非常讨厌的闪烁效果。有没有更好的方法去做这件事?有没有办法摆脱闪烁?
最佳答案
好吧,如果你的盒子有 PanGestureRecognizer,闪烁效果只是因为 TotalX 和 TotalY 是相对于盒子的平移坐标。
尝试改变
box.TranslationX = box.X + args.TotalX;
box.TranslationY = box.Y + args.TotalY;
通过
box.TranslationX = box.TranslationX + args.TotalX;
box.TranslationY = box.TranslationY + args.TotalY;
它应该可以工作。
编辑:它只涉及 Xamarin Android,它对 UWP 的工作方式不同。
关于Xamarin pan 手势识别器没有给出准确的坐标,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39458078/