JavaFX ScrollPane - 加快触摸设备的滑动效果

时间:2013-05-29 06:45:32

标签: java javafx-2 javafx

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

如何加快滑动动画?

1 个答案:

答案 0 :(得分: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。这是您可以用来正确翻译窗格的价值。 :) 希望它有用。我这里没有触控设备来测试它。