2012-08-28 27 views
1

爲了改善用戶在我的應用程序中的體驗,我喜歡區分用戶不同的鼠標輪速和數量,並採取相應的行動來提高我的GUI用戶freindlyness,我如何分析它?區分快慢輪滑

+0

您使用哪種框架與鼠標交互?搖擺? AWT? GWT(即實際上不是Java而是JavaScript)?還有別的嗎? –

+0

即時通訊使用java.awt.event.MouseWheelListener;我應該使用不同的嗎? –

+0

只要您的應用程序使用AWT或Swing編寫,MouseWheelListener沒有任何問題。的確,這是AFAIK的首選方式。 –

回答

0

羅伯特·哈維使得在評論一個很好的建議,但它並沒有遠遠不夠。傳遞給MouseWheelListener.mouseWheelMoved的MouseWheelEvent包含幾個屬性,您應該在事件之間的時間之外考慮這些屬性。具體來說:

這些方法中的第一個MouseWheelEvent.getPreciseWheelRotation返回用戶旋轉鼠標的點擊次數,並將高分辨率鼠標和觸控板考慮在內。該數字的絕對值越高,用戶滾動鼠標的速度越快。

第二種方法MouseWheelEvent.getScrollAmount告訴系統設置用戶的操作系統使用滾動速度。使用Windows控制面板或其他平臺上的類似工具,用戶可以設置滾輪影響界面更改的速度。如果用戶設置了一個非常快的滾輪,則應該將中速滾動計爲與另一個平臺上的快速滾動相同。用戶要求更快速地滾動,所以您的應用應該尊重這一點。

當然,您應該保留最後一次滾動事件的時間(您可以使用System.currentTimeMillis()System.nanoTime()來測量時間增量),滾動事件之間的間隔越短,意味着滾動速度越快。一種可能的解決方案是跟蹤用戶在一段時間內(例如0.1或0.05秒)移動鼠標的總點擊次數,並且基於滾動點擊累計次數而不是點擊次數發生在每個事件中。

+0

謝謝,一個漂亮的滾動處理函數的建議公式是什麼,它取決於變量x,即每o.1秒鐘的點擊次數?比如我應該每0.1秒滾動多少dpi,取決於用戶在那段時間點擊了多少?如果你添加一個答案,你的答案將是完美的 –

+0

@OfekRon我對你的問題有兩個答案。首先,你不應該自己滾動內容 - 你應該使用一個內置的控件爲你做這件事(一個例子是[JScrollPane](http://docs.oracle.com/javase/7/docs/api/用於Swing的javax/swing/JScrollPane.html)。開發Swing的人爲了正確滾動而投入了大量工作。其次,如果你不滾動內容,滾動的速度取決於你的應用程序。例如,如果你正在編寫一個遊戲,用戶可以使用滾輪跳躍,那麼你應該嘗試一些不同的跳躍高度,並選擇最好的。 –