私のアプリケーションでのユーザーエクスペリエンスを向上させるために、ユーザーの異なるマウスの回転速度と量を区別し、それに応じてGUIユーザーの親しみやすさを向上させるために行動したいのですが、どのように分析しますか?
1 に答える
Robert Harveyはコメントで良い提案をしていますが、それだけでは十分ではありません。MouseWheelListener.mouseWheelMovedに渡されるMouseWheelEventには、イベント間の時間を超えて考慮する必要があるいくつかのプロパティが含まれています。具体的には:
- MouseWheelEvent.getPreciseWheelRotationから返されるクリック数。
- MouseWheelEvent.getScrollAmountによって返される、ユーザーがクリックごとにスクロールしたい量。ただし、MouseWheelEvent.getScrollTypeを除きます。このメソッドがMouseWheelEvent.WHEEL_UNIT_SCROLLを返さない限り、MouseWheelEvent.getScrollAmountは未定義の値を返します。
これらのメソッドの最初のMouseWheelEvent.getPreciseWheelRotationは、高解像度のマウスとトラックパッドを考慮して、ユーザーがマウスを回転させたクリック数を返します。この数値の絶対値が高いほど、ユーザーはマウスをすばやくスクロールしていました。
これらのメソッドの2番目のMouseWheelEvent.getScrollAmountは、ユーザーのオペレーティングシステムがスクロール速度に使用するシステム設定を通知します。ユーザーは、Windowsのコントロールパネルまたは他のプラットフォームの同様のツールを使用して、スクロールホイールがインターフェイスの変更に影響を与える速度を設定できます。ユーザーが非常に高速なスクロールホイールを設定している場合は、中速のスクロールを別のプラットフォームの非常に高速なスクロールと同じであると見なす必要があります。ユーザーはもっと速くスクロールするように要求したので、アプリはそれを尊重する必要があります。
そしてもちろん、最後のスクロールイベントの時間を維持する必要があり(System.currentTimeMillis()またはSystem.nanoTime()を使用して時間デルタを測定できます)、スクロールイベント間の間隔が短いほど、通常はスクロールが速くなります。考えられる解決策の1つは、ユーザーが一定期間(たとえば、0.1秒または0.05秒)にわたってマウスを動かした合計クリック数を追跡し、クリック数ではなく、スクロールホイールの累積クリック数に基づいてインタラクションを行うことです。各イベントで発生します。