次のコードを使用して、トラックボールの感度を設定します
public class Main extends UiApplication {
public static void main(String[] args) {
Main theApp = new Main();
theApp.enterEventDispatcher();
}
public Main() {
if (Trackball.isSupported()) {
Trackball.setFilter(Trackball.FILTER_ACCELERATION);
Trackball.setSensitivityX(20);
Trackball.setSensitivityY(20);
}
pushScreen(new LoginScreen());
}
}
使用した画面は次のとおりです。
public class LoginScreen extends MainScreen {
public LoginScreen() {
super(MainScreen.NO_VERTICAL_SCROLL | MainScreen.NO_VERTICAL_SCROLLBAR);
add(...) // SOME COMPONENTS ARE ADDED HERE
}
}
でトラックボールの感度を確認するLoginScreen
とTrackball.getSensitivityX()
「 2147483647」が返ってきTrackball.getSensitivityY()
たのnavigationMovement
に対し、すぐにセットして確認するとMain
「20」が返ってきた!
LoginScreen
そこで、次のように設定ブロックを内部に移動しました。
public class LoginScreen extends MainScreen {
public LoginScreen() {
super(MainScreen.NO_VERTICAL_SCROLL | MainScreen.NO_VERTICAL_SCROLLBAR);
if (Trackball.isSupported()) {
Trackball.setFilter(Trackball.FILTER_ACCELERATION);
Trackball.setSensitivityX(20);
Trackball.setSensitivityY(20);
}
add(...) // SOME COMPONENTS ARE ADDED HERE
}
}
また、 usingTrackball.getSensitivityX()
およびTrackball.getSensitivityY()
inを介して「2147483647」を返しますnavigationMovement
。
最後に、いくつかの Web 検索に基づいて、navigationMovement
次のように条件を 内に移動しました。
protected boolean navigationMovement(int dx, int dy, int status, int time) {
if (Trackball.isSupported()) {
Trackball.setFilter(Trackball.FILTER_ACCELERATION);
Trackball.setSensitivityX(20);
Trackball.setSensitivityY(20);
}
return super.navigationMovement(dx, dy, status, time);
}
問題は、ナビゲーションの動きがインデックス 0 のフィールドからインデックス 2、インデックス 4 にジャンプすることです...など、動きごとにフィールドをバイパスします!
画面のトラックボールの感度を正しく設定するには?