我发现如果我在触摸设备上的 JavaFX 应用程序中的 ScrollPane 内滑动,滚动动画会很慢。我不会在 ScrollPane 的 ScrollBar 上滑动,而是在内容本身内滑动。
如何加快滑动动画?
这是触摸设备和 ScrollPane 的一个已知问题;) 如果您想加快动画速度,您必须自己设置位置。我以前用这种方式解决了同样的问题,效果很好。你需要做这样的事情:
ScrollPane scrollPane = new ScrollPane();
final IntegerProperty vValueProperty = new SimpleIntegerProperty(0);
final int steps = 5;
scrollPane.vvalueProperty().bind(vValueProperty);
scrollPane.setOnSwipeDown(new EventHandler<GestureEvent>() {
public void handle(GestureEvent event) {
// calculate the needed value here
vValueProperty.set(vValueProperty.get() + steps);
}
});
如果正常的滑动动画打扰了你,只需用
event.consume();
但在这种情况下,您可能需要使用 EventFilter,因为在 Event 执行任何操作之前调用 EventFilter。不记得 EventHandler 末尾的 consume() 是否足够。如果不是,你需要使用这样的东西:
scrollPane.addEventFilter(SwipeEvent.SWIPE_DOWN,
new EventHandler<SwipeEvent>() {
public void handle(SwipeEvent event) {
vValueProperty.set(vValueProperty.get() - steps);
event.consume();
}
});
好吧,这只是为了加快动画速度。如果您希望 Pane 跟随您的手指,只需保存第一个值,您将获得 OnTouchDetected 并计算 Offset OnTouchMoved。这是您可以用来正确翻译窗格的值。:) 希望它有用。我这里没有触摸设备来测试它。