3

我发现如果我在触摸设备上的 JavaFX 应用程序中的 ScrollPane 内滑动,滚动动画会很慢。我不会在 ScrollPane 的 ScrollBar 上滑动,而是在内容本身内滑动。

如何加快滑动动画?

4

1 回答 1

1

这是触摸设备和 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。这是您可以用来正确翻译窗格的值。:) 希望它有用。我这里没有触摸设备来测试它。

于 2014-10-23T21:35:29.810 回答