gpt4 book ai didi

Android:MotionEvent 需要对 GetHistoricalX 和 GetHistoricalY 做一些说明

转载 作者:行者123 更新时间:2023-12-05 00:21:52 30 4
gpt4 key购买 nike

在我的应用程序中,我需要通过触摸在 View 上绘制笔触。触地和触动(处理触动后)时,我必须保存以前的坐标。当我查看 API 时,有 GetHistoricalX 和 GetHistoricalY。

1) How does these historical data work. Will they ever be removed?

2) Will it start keeping all the historical data when the touch start moving?



因为我使用了也为 IOS 实现的 Xamarin Form。 IOS有没有和这个一样的东西。

最佳答案

安卓:
在 Android 上,GetHistoricalX|Y将包含具有 的 X/Y不是 自上次 ACTION_MOVE 以来已报告事件(即,为了提高效率,这被批处理为单个触摸事件)。

The coordinates are "historical" only insofar as they are older than the current coordinates in the batch; however, they are still distinct from any other coordinates reported in prior motion events. To process all coordinates in the batch in time order, first consume the historical coordinates then consume the current coordinates.


注意:由于没有为 /dev/input/event0 定义标准输入采样率,速率由硬件开发人员以及他们的数字化仪网格驱动程序是如何编写/配置的。然后,Android 将收集可用样本的数量,并在历史数据中将这些样本与最新的 X/Y 样本一起提供给开发人员。如果每个人都知道如何从操作系统获得这个频率,我很想知道 ;-)
您可以使用 GetHistorySize要获得可用“点”的数量,首先处理它们,然后处理当前的 X/Y,但请记住,这些只是自上次 move 批处理事件以来的位置。
下有示例 Java 代码配料 栏目@ https://developer.android.com/reference/android/view/MotionEvent.html
IOS:
在 iOS 上,报告的触摸事件数量基于其数字化仪的 60hz 采样率。某些 iDevice 的频率更快(较新的 iPad 为 120hz,iPad Pro 为 240hz)。这些“额外”点在 coalescedTouchesForTouch 方法( Xamarin.iOS = GetCoalescedTouches)中报告。
注意:iOS 甚至有 predictedTouchesForTouch ( Xamarin.iOS = GetPredictedTouches )可能在 UIEvent 中可用.这些可用于“预绘制”用户可能 move 到的位置,Apple 在使用 Apple Pencil 时有开发代码示例,以防止铅 Nib 端出现视觉“滞后”......
净结果:
最后,如果您需要保留 X/Y 触摸位置的历史记录以便重播它们,您将需要自己存储这些,因为 iOS 或 Android 都不会在触摸事件之外缓冲这些。

关于Android:MotionEvent 需要对 GetHistoricalX 和 GetHistoricalY 做一些说明,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39358437/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com