iPhone上的JavaFX - 应用阴影时的Laggy ListView滚动

时间:2016-06-27 15:23:47

标签: css javafx scroll shadow javafxports

我正在使用JavaFXPorts在iOS上开发应用程序。我有一个Pane,它包含一个包含国家及其标志的ListView。我注意到当我在窗格上应用Drophadow效果时,ListView滚动是滞后的。正如您从下面的视频中看到的那样,没有效果滚动是非常流畅的,当通过CSS应用效果时,滚动开始变得迟钝。我想保持阴影效果,因为它使应用程序更美观。所以任何建议都非常感谢。

我使用的CSS代码是:

-fx-effect: dropshadow( three-pass-box, rgba(0,0,0,0.6) , 5, 0.0 , 0 , 1);

Video: Scrolling without shadow effect

Video: Scrolling with shadw effect (Laggy)

请注意,这是在iPhone 6上运行。在iPhone 5上,结果要糟糕得多。

1 个答案:

答案 0 :(得分:1)

添加效果,css,转换,自定义控件以及其他通常在桌面上运行良好的复杂内容时,移植到移动设备时性能方面可能会有很大的损失。

效果

虽然效果使节点或窗格看起来很花哨,但它们对移动设备的性能影响最大。

尽量避免将它们应用于更改很多的节点,例如ListView,TableView或ComboBox控件上的单元格。

此外,如果您将它们应用于具有引用子项(ListView,...)的父项,则如果子项无效(滚动后或类似项),将始终呈现父项(和效果)。< / p>

如果您确实需要对此父级的效果,请尝试拆分父级和子级。

而不是:

parent (Pane with effect)
  |-- ListView

你可以这样做:

parent (StackPane without effect)
  |-- Pane (with effect)
  |-- ListView 

由于窗格不会发生太大变化,因此您可以使用缓存。通常,缓存策略通过渲染节点的图像(具有效果的窗格)来工作,而不是重新创建节点和该效果,所以这是一个快速的胜利:

parent (StackPane without effect)
  |-- Pane (with effect) and with Cache
  |-- ListView 

相反,不要在更改很多的节点上使用缓存(如ListView)。

CSS

复杂的CSS需要很长的CPU时间。尽量简化它。即使你可以删除整个CSS进行快速测试。然后决定你可以使用或不使用的内容。

尝试用代码替换一些样式。

动画

动画也是如此:如果可能,请避免动画,过渡。

节点数和自定义控件

节点数量越多,性能越低,因此尽量将其保持在最低限度(在可能的情况下用图像替换复杂内容,画布)。

切换场景

移动屏幕较小,每个场景的内容比桌面上的内容更少。同样重要的是避免切换阶段或场景。而是使用不同的节点并在同一场景中替换它们。

Gluon Charm使用View nodes,以及在不同视图之间切换的简便方法:MobileApplication.getInstance().switchView("other view name")

图片

最后,当使用从互联网下载或从文件加载的图像时,缓存策略是必须的。看看Gluon Charm Down提供的那些。