为了改善我的应用程序上的用户体验,id喜欢区分用户不同的鼠标滚轮速度和数量,并相应地采取行动以提高我的GUI用户的友善度,我该如何对其进行分析?
最佳答案
罗伯特·哈维(Robert Harvey)在评论中提出了一个很好的建议,但还远远不够。传递给MouseWheelListener.mouseWheelMoved的MouseWheelEvent包含一些属性,这些属性应在两次事件之间的时间间隔之外考虑。特别:
从MouseWheelEvent.getPreciseWheelRotation返回的点击次数。
用户希望每次点击滚动的数量,由MouseWheelEvent.getScrollAmount返回。请注意,除非MouseWheelEvent.getScrollType。除非此方法返回MouseWheelEvent.WHEEL_UNIT_SCROLL,否则MouseWheelEvent.getScrollAmount将返回未定义的值。
这些方法中的第一个方法MouseWheelEvent.getPreciseWheelRotation返回考虑到高分辨率鼠标和触控板的用户旋转鼠标的点击次数。该数字的绝对值越高,用户滚动鼠标的速度就越快。
这些方法中的第二个方法MouseWheelEvent.getScrollAmount告诉用户用户操作系统用于滚动速度的系统设置。使用Windows控制面板或其他平台上的类似工具,用户可以设置滚轮影响界面更改的速度。如果用户设置了非常快速的滚轮,则您可能应该算出中速滚动与另一个平台上的非常快速的滚动相同。用户要求滚动的内容更快,因此您的应用应该尊重这一点。
当然,您应该保留上一个滚动事件的时间(可以使用System.currentTimeMillis()或System.nanoTime()来测量时间增量),并且滚动事件之间的时间间隔较短通常意味着滚动速度更快。一种可能的解决方案是跟踪用户在某个恒定时间段(例如0.1或0.05秒)内移动鼠标的总点击数,并将交互基于累积的滚轮点击数而不是点击次数发生在每个事件中。