JavaFX动画:改变宽度/高度的任何东西?

时间:2016-01-21 23:41:23

标签: java animation javafx slide

我已经成功实现了一个简单的动画,使左窗格滑入和滑出。但这还不够。

当显示窗格(滑入)时,它就在另一个节点旁边。 窗口完全按照预期填满。这意味着Node被锚定到窗口的右边缘。

但是,当窗格滑出时,它会自然地在屏幕边缘和滑动窗格旁边的上述节点之间产生间隙。

我需要填补这个空白,以便这个节点可以利用更多的位置并展示更多东西。

我正在使用缩放动画,但我错了:内容是拉伸的。我也试过应用相同的过渡动画,但这显然是错误的,因为它不是在窗格和节点之间有间隙,而是在节点和窗口的右边缘之间。

所以我正在寻找一个动画,当窗格滑出时可以填充间隙并利用释放的空间,反之亦然,当窗格滑回时,节点会回到原来的状态大小

有没有办法完成这样的事情?谢谢!

[更新1]

以下是一些代码:

显示MaiNWindow.fxml的{​​{1}}:

ListView
  • menuItems 是左侧窗格,在按钮点击时会滑入/滑出。
  • itemsList 会显示上面列表中所选项目的内容。

现在动画代码:

<AnchorPane id="AnchorPane" prefHeight="720.0" prefWidth="1280.0" xmlns="http://javafx.com/javafx/8" xmlns:fx="http://javafx.com/fxml/1" fx:controller="package.mycontroller">
    <children>
      <ListView fx:id="menuItems" prefHeight="720.0" prefWidth="476.0" AnchorPane.bottomAnchor="0.0" AnchorPane.leftAnchor="0.0" AnchorPane.topAnchor="0.0" />
      <ListView fx:id="itemsList" layoutX="476.0" prefHeight="720.0" prefWidth="804.0" AnchorPane.bottomAnchor="0.0" AnchorPane.leftAnchor="476.0" AnchorPane.rightAnchor="0.0" AnchorPane.topAnchor="0.0" />
    </children>
</AnchorPane>

这非常合适: menuitems 会在没有打嗝的情况下滑入和滑出。

正如我所说,当它滑出时,有间隙。 如果我在 itemsList 上使用相同类型的final TranslateTransition expandMenuItems = new TranslateTransition(new Duration(500), this.menuItems); final TranslateTransition collapseMenuItems = new TranslateTransition(new Duration(500), this.menuItems); expandMenuItems.setToX(0); // Event handler for sliding in/out the left pane this.menu.setOnMouseClicked((final MouseEvent event) -> { if (this.menuItems.getTranslateX() != 0) { expandContacts.play(); } else { collapseContacts.setToX(-(this.menuItems.getWidth())); collapseContacts.play(); } }); ,则差距现在位于 itemsList 之后,因此不是这样。 TranslationAnimation也不起作用,因为它会删除丑陋的 itemsList 的内容。

寻找解决方案,我偶然发现了这个视频,这正是我要找的内容的代表:https://www.youtube.com/watch?v=cKXFG4pAoys

0 个答案:

没有答案